ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

5.依赖倒转原则

2021-04-11 22:06:53  阅读:190  来源: 互联网

标签:fly 依赖 企鹅 原则 子类 基类 倒转 bird


package dependenceInversionPrinciple;

/**
 * 依赖倒转原则
 *
 * @author LiMing E-mail:1151143484@qq.com
 * @date 2017年6月11日 上午9:52:36
 */
public class DependenceInversionPrinciple {
	// 里氏替换原则
	/*
	 * 里氏替换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。
	 * 里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,
	 * 软件单位的功能不受到影响时,基类才能真正被复用, 而衍生类也能够在基类的基础上增加新的行为。
	 * 
	 * 
	 * 比方说java中的继承: 子类方法如果覆盖父类方法 子类方法的类修饰符必须要大于父类 但是子类方法抛出的异常必须要是父类方法抛出异常或者是其子类
	 */

	/*
	 * 依赖倒转原则: A:高层模块不应该依赖底层模块 两个都应该依赖抽象 B:抽象不应该依赖细节 细节应该依赖抽象
	 * 
	 * 
	 * 好吧 这里比较绕,说白了就是谁也不依靠谁 只依赖接口(按照接口的规定走)
	 */

	/**
	 * 在这里举个例子 小时候都学过 企鹅 鸵鸟 都属于鸟类 如果用java来实现的话 看下边的实现 bird 是鸟类 其中有一个方法是fly
	 * penguin 是企鹅类 它集成bird 所以他也有fly功能 但是企鹅本身是不会飞行的所以 它要覆盖fly方法 在方法的实现中写上 -》我不会飞
	 * 看似很正常 但是呢 这违反了里氏替换原则 为什么呢 企鹅不能代替bird了 因为它已经不会飞了
	 */
}
/*
 * 鸟类
 */
class bird {
	public void fly() {
		System.out.println("i can fly");
	}
}
/*
 * 企鹅类
 */
class penguin extends bird {
	public void fly() {
		System.out.println("i can't fly");
	}
}

 

标签:fly,依赖,企鹅,原则,子类,基类,倒转,bird
来源: https://blog.51cto.com/u_12198094/2699991

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有