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");}}

 

©著作权归作者所有:来自51CTO博客作者木子的昼夜的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 8.工厂方法
  2. 【收藏】最全JavaScript中所有的内置对象属性和方法汇总整理
  3. 微信小程序或公众号以及特殊表情,昵称等存入MySQL报错问题
  4. bootstrap-treeview 扩展addNode方法 动态添加子节点的方法
  5. DBeaver、Navicat、MySQL高频报错及解决方法
  6. JavaScript:留言板添加字数实时统计与禁止超出功能,部分字符串和
  7. 用jQuery的attr()设置option默认选中无效的解决 attr设置属性失
  8. 【JS基础入门】JavaScript原生Ajax请求与响应处理方式及JSON数据
  9. java类的成员初始化顺序和初始化块顺序

随机推荐

  1. 【Android】如何调节屏幕亮度,关闭屏幕
  2. 如何申请Android Map API Key
  3. Androkd开发坏境配置以及常用插件
  4. ListView高级用法
  5. Android(安卓)用 libusb 操作 USB 设备,无
  6. Android证书创建之 keytool 错误:java.io.
  7. android开发之实现应用内音乐的播放
  8. android studio本地配置gradle遇到的坑以
  9. Android几种动画的总结(MaterialAnimatio
  10. ADB—查看日志