在进行控件封装时,通常会定义一个通用操作的接口,只要满足此接口,都可以使用控件承载其功能,但是当需要扩展控件基本功能的时候,难免会在此接口中添加其他的定义,那么实现了此接口的所有类定义都必须的添加新的方法,改动非常大。
通常的做法是使用一个抽象类实现此接口,其他需要扩展此接口的类都继承自此抽象类,而非直接继承接口本身,这样就算接口添加再多的方法,只需要在抽象类中添加对应方法即可,不影响子类。
伪代码描述:
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中进行修改即可,不会影响到其他子类