设计原则之里氏替换原则的概念及实例代码操作

场景

例题:设计文件管理系统,能够读取txt、doc和Excel等文件,采用子类继承父类方式

不使用里氏替换原则的解法:

代码实现:

//具体类
class ReadFile {
        public void read(String fileName){
                System.out.println("读取Excel文件"+fileName);
        }
}
class ReadDoc extends ReadFile{
//子类覆写父类的方法
        public void read(String fileName){
                System.out.println("读取doc文件"+fileName);
        }
}
class Demo{
		public static void readFile(ReadFile a,String fileName){
			a.read(fileName);
		} 
        public static void main(String[] args){
               readFile(new ReadFile(),"a.xsl");
               readFile(new ReadDoc(),"a.xsl");
         }
}

里氏替换原则的概念
所有引用基类的地方必须能透明地使用其子类的对象,即替换成子类之后,系统的行为不会发生改变
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用里氏替换原则的解法:
在这里插入图片描述
代码实现:

//父类是接口

public interface Readable{

       void read(String fileName);

}

//子类实现了接口Readable

public class ReadDoc implements Readable{

       @Override

        public void read(String fileName){

               System.out.println("读取doc文件"+fileName);

        }

}

public class ReadXsl implements Readable{

       @Override

        public void read(String fileName){

               System.out.println("读取xsl文件"+fileName);

        }

}

//里式替换原则

public class Demo{

        public static void readFile(Readable r,String fileName){

                r.read(fileName);

        }

        public static void main(String[] args){

               Readable r= new ReadDoc();

                readFile(r,"a.doc");//读取doc文件

                ReadXsl rs = new ReadXsl();

                readFile(rs,"b.xsl");//子类透明替换父类(接口)

        }

}

运行截图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值