三:里氏替换原则(Liskov Substitution Principle)
//窗口类
public class Window{
public void show(View child){
child.draw();
}
}
//建立视图抽象,测量视图的宽高为公用代码,绘制实现件给具体子类
public abstract class View{
public abstract void draw();
public void measure(int width,int height){
//测量视图大小,具体代码省略
}
}
//View子类,Button
public class Button extends View{
public void draw(){
//绘制按钮。。。
}
}
//View子类,TextView
public class TextView{
public void draw(){
//绘制文本。。。
}
}
Window依赖于View,View定义了视图抽象,measure是各个子类共享的类,具体的draw交给其子类去实现。任何继承自View类的子类都可以设置给show方法,这就是里氏替换原则。这样就可以产生千变万化的View,而且可以统一传递给Window来进行管理并展示在屏幕上。