代码改变世界

[设计模式]设计模式

2014-05-15 19:22  hellenism  阅读(156)  评论(0编辑  收藏  举报

在进行控件封装时,通常会定义一个通用操作的接口,只要满足此接口,都可以使用控件承载其功能,但是当需要扩展控件基本功能的时候,难免会在此接口中添加其他的定义,那么实现了此接口的所有类定义都必须的添加新的方法,改动非常大。

通常的做法是使用一个抽象类实现此接口,其他需要扩展此接口的类都继承自此抽象类,而非直接继承接口本身,这样就算接口添加再多的方法,只需要在抽象类中添加对应方法即可,不影响子类。

 

伪代码描述:

interface CustomeViewInterface

{

     void Click();

     void Tap();

}

 

如果子类直接继承接口:

CustomeViewA : CustomeViewInterface

CusomteViewB : CustomeViewInterface

CustomeViewC : CustomeViewInterface

......

 

当CustomeViewInterface发生变化时,所有的CustomeViewA .... Z都要进行改动。工作量极大

 

解决办法:

使用一个抽象类实现接口

abstruct CusomteView : CustomeViewInterface

{

   public void Click(){};

   public void Tap(){};

}

其他子类继承与此抽象类

CustomeViewA : CusomteView

CusomteViewB : CusomteView

CusomteViewC : CusomteView

......

此时,如果接口CustomeViewInterface发生变化,只需要在抽象类CustomeView中进行修改即可,不会影响到其他子类