面向对象设计原则之三(里氏替换原则)-构建扩展性更好的系统

里氏替换原则,所有引用基类的地方必须能透明的使用其子类的对象。里氏替换原则依赖于继承、多态这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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值