黑大学子在学设计原则

以下文章大部分出于 可以自行阅读 而且都要阅读
围观设计模式–作者自己的感悟

转载总结的设计模式–全备教程

设计模式学习网站–基本定义

开闭原则

修改关闭 扩展开放 我一直以为是抽象类写的好 然后实现类扩展 原来是不可以新增功能就对抽象类进行修改的 可以新写一个类继承当前的抽象类 然后在里面新增功能

1—点击阅读开闭原则定义

2—开闭原则简单案例

3—进阶案例也不难

4—总结


里氏替换原则

在继承关系中,父类的对象如果替换为子类的对象,他原来执行的行为依然保持不变,那么这样的程序才符合里氏替换原则,否则违背了里氏替换原则。

1—点击阅读定义和案例

里氏替换原则通俗来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。
在实际编程中,我们常会通过重写父类的方法来完成新的功能,这样写起来虽然简单,但是整个继承体系的可复用性会比较差,特别是运用多态比较频繁时,程序运行出错的几率非常大。

根据LSP,我们把基类替换成它的子类,结果应该也是一样的,也就是说,替换成子类后,程序的行为发生了变化,它不满足LSP。

2—进阶

可以重写父类 但是标准是父类和子类可以透明转换 比如正方形 长方形那个例子 正方形子类重写了父类的方法 但是在后来的函数调用种 父类替换成子类会因为他重写的方法而无法子类父类透明转换

所以应该尽量避免重写父类 虽然这很方便 只要显明的调用子类的方法即可 但是不知道代码之后会扩展成什么样 也许也会遇到正方形那种需求 这时候就要修改子类重写的代码 违反开闭原则 所以尽量不要重写
如果非要重写父类的方法,比较通用的做法是:原来的父类和子类都继承一个更通俗的基类,原来的继承关系去掉,采用依赖、聚合、组合等关系替代。(非要重写只能删除关系了。。)

3—点击阅读里氏替换原则
小鸟例子 也说明子类重写父类函数 在之后新增功能时 却无法完成子类和父类的透明转换 即子类小鸟无法像父类一样适用新增的功能 所以不要重写 如果非要重写那就继承更大的类


依赖倒置原则

1—依赖倒置原则简单定义

文章解释了高层模块 不要耦合低层模块 而是在中间加一层抽象类 大家都依赖于抽象

2—进阶定义 值得细品每一句

依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性
其核心思想是:要面向接口编程,不要面向实现编程。

  • 不要总写具体类的派生类 大家都应该依赖抽象
    总结 :依赖让尽量使用接口/抽象类 加上里氏原则的劝告不要使用具体类的派生类 不要使用子类的重写 那就尽量不要写extends 多写implements
  • 在开发的时候尽量先写出接口 然后先列出功能

以下不再引用文章链接 直接去本文最上面的链接中寻找对应文章

单一职责原则

我发现这些和重构很像 临时变量要单一责任

接口隔离原则

概括地讲,面向对象设计原则仍然是面向对象思想的体现。例如,单一职责原则与接口隔离原则体现了封装的思想,开放封闭原则体现了对象的封装与多态,而Liskov替换原则是对对象继承的规范,至于依赖倒置原则,则是多态与抽象思想的体现。在充分理解面向对象思想的基础上,掌握基本的设计原则,并能够在项目设计中灵活运用这些原则,就能够改善我们的设计,尤其能够保证可重用性、可维护性与可扩展性等系统的质量属性

合成复用原则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值