浅读设计模式之禅(一)

1 篇文章 0 订阅
1 篇文章 0 订阅

本文是我在读《设计模式之禅》这本书时所提炼出来的一些关键点,比较笼统,是我想在以后用他来温故知识,基本不适用于普通阅读,如有看不明白的地方还望翻书至原章原节....

一、单一职责原则(SRP):接口一定要做到单一职责,类的设计要尽量做到只有一个原因引起它的变化

二、里氏替换原则(LSP):

1、在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则

2、子类必须完全实现父类的方法。如果子类不能完整的实现父类的方法,或者父类的某些方法在子类中已经发生了“畸变”,则建议断开父子继承关系,采用依赖、聚合、组合等关系代替继承。(这点是书上明确要求的,但是个人觉得还是分情况去对待吧,读过太多子类没有完全实现父类代码的说.......)

3、覆盖或实现父类的方法时输入参数可以被放大

4、覆写或者实现父类方法时输出结果可以被缩小

三、依赖倒置原则(DIP):

(一)、含义:

1、模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的

2、接口或抽象类不依赖于实现类

3、实现类依赖接口或抽象类

(二)、写法

1、构造函数传递依赖对象

2、Set方法传递依赖对象

3、接口声明依赖对象,也叫接口注入

(三)规则

1、每个类尽量都有接口或抽象类,或者两者都具备

2、变量的表面类型尽量是接口或者是抽象类

3、任何类都不应该从具体类派生(这个不是绝对遵循,视情况而定)

4、尽量不要覆写基类已实现的方法

5、结合里氏替换原则使用

四、接口隔离原则(换个角度看,类也是一种接口,实例接口):

单一职责是要求类和接口的职责单一,注重职责,属业务逻辑上的划分,而接口隔离原则要求接口的方法尽量少

规则:

1、根据接口隔离原则拆分接口时,首先必须满足单一职责原则,即一个接口只服务于一个子模块或者业务逻辑

2、接口要高内聚,尽量少公布public方法(貌似这点跟C#相冲......),书上原话是接口是对外的承诺,承诺越少对系统的开发越有利...

3、定制服务:一个系统或系统内的模块之间必然会有耦合,有耦合就要有互相访问的接口,而接口只提供访问者必要的方法

4、接口设计是有限度的

五、迪米特法则(LoD)--也称为最少知识原则(LKP):

1、类与类之间的 关系是建立在类间的,而不是方法间,因此一个方法尽量不引入一个类中不存在的对象

2、尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,

3、如果一个有一个可以放在多个类中的方法,那么要尽量选取即不会引起类间关系也不会产生负面影响的类

4、谨慎使用Serializable

六、开闭原则:

1、抽象约束

a:通过接口或抽象类扩展,对扩展进行边界限定,不允许出现抽象类或接口中不存在的public方法

b:参数类型、引用对象尽量使用接口或者抽象类,而不是实现类

c:抽象层尽量保持稳定,一旦确定就不应该再进行修改

2、元数据控制模块行为

3、制定项目章程

4、封装变化


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值