面向对象的六大原则(三)-- 里氏替换原则

三:里氏替换原则(Liskov Substitution Principle)

定义:所有引用基类的地方都必须能透明地使用其子类的对象

举个例子:Android中的Windows与View的关系

代码如下:
//窗口类
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来进行管理并展示在屏幕上。

在上一篇的代码也很好地反映了该原则,即MemoryCache、DiskCache、DoubleCache都可以替换ImageCache的工作,并且能够保证行为的正确性。ImageCache建立了获取缓存图片、保存缓存图片的接口规范,MemoryCache等根据接口规范实现了相应的功能,用户只需要在使用时指定具体的缓存对象就可以动态地替换ImageLoader中的缓存策略。这就使得ImageLoader的缓存系统具有了无线的可能性,也就是保证了可扩展性。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值