面向对象设计原则之三(里氏替换原则)-构建扩展性更好的系统
来源:互联网 发布:windows安装ruby环境 编辑:程序博客网 时间:2024/05/21 11:08
里氏替换原则,所有引用基类的地方必须能透明的使用其子类的对象。里氏替换原则依赖于继承、多态这2大特性。通俗点讲,就是只要父类能出现的地方子类就可以出现,而去替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是反过来就不行了,有子类出现的地方,父类未必就能适应。说了那么多,其实最终总结就2个字:抽象。
例子代码如下:
package com.example.yangshin99.myapplication;import android.view.View;/** * Created by yangshin99 on 16/2/16. * 窗口类 */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){ //测量视图大小 } } //按钮类的具体实现 public class Button extends View{ @Override public void draw() { //绘制按钮 } } //TextView的具体实现 public class TextView extends View{ @Override public void draw() { //绘制文本 } }
上述示例中,Window依赖于View,而View定义了视图抽象,measure是各个子类共享的方法,子类通过覆写View的draw方法实现各具特色的功能,在这里,这个功能就是绘制自身的内容。任何继承自View类的子类都可以设置给show方法,就是所说的里氏替换。通过里氏替换,就可以自定义各种各样、千变万化的View,然后传递给window。
里氏替换原则的核心原理是抽象,抽象又依赖于继承。在代码实现中,里氏替换又有多态。里氏原则指导我们构建更好的软件系统。里氏替换原则就是为ImageLoader使用不同缓存策略这类问题提供指导原则,也就是建立抽象,通过抽象建立规范,具体的实现在运行时替换掉抽象,保证系统的扩展性、灵活性。开放-关闭原则和里氏替换原则往往生死相依,不离不弃。通过里氏替换原则来达到对扩展开放,对修改关闭的效果。这2个原则都强调一个重要特性-抽象。因此,在开发过程中,运用抽象时走向代码优化的重要一步。
0 0
- 面向对象设计原则之三(里氏替换原则)-构建扩展性更好的系统
- 面向对象设计原则之三:里氏替换原则
- 面向对象设计6大原则之六(迪米特原则)-更好的扩展性
- 面向对象的六大原则(三)-- 里氏替换原则
- [设计模式]面向对象设计原则之里氏替换原则
- 面向对象原则之里氏替换原则
- 面向对象的设计原则:里氏替换原则
- 面向对象六大原则(三):里氏替换原则
- 编写扩展性更好的程序——里氏替换原则
- 面向对象设计原则(三):里氏替换原则(LSP)
- 面向对象设计原则--里氏替换原则(LSP)
- 面向对象设计原则详解:里氏替换原则
- 面向对象设计原则二:里氏替换原则
- 面向对象设计原则详解:里氏替换原则
- 面向对象六大原则之里氏替换原则
- 面向对象程序设计的六大原则(3)- 里氏替换原则
- 面象对象设计6大原则之三:里氏替换原则
- 面向对象设计原则:里氏替换原则(Liskov Substitution principle)
- 日经春秋 20160216
- narnia0
- Espresso 自动化测试(八)- SeekBar的测试
- kill命令详解
- oracle数据库出现“批处理中出现错误: ORA-00001: 违反唯一约束条件”解决方法
- 面向对象设计原则之三(里氏替换原则)-构建扩展性更好的系统
- TextView 在布局中设置最多显示多少,后面的以...表示
- AE小技巧!3个方法帮你快速实现流畅好看的相融动效
- 福利:分享给大家一个软件,可以录制gif图片
- 【SPOJ-TRANSP】Transposing is Fun【Pólya】【欧拉函数】【二进制】
- Bonjour 用法简介
- Espresso 自动化测试(九)-inRoot 使用
- 软件开发技术: 高内聚(high cohesion)
- 小Z的2016新年随想