六大设计原则
1. 单一职责原则(SRP: Single Resposibility Principle)用“职责”或“变化原因”来衡量接口或类设计得是否优良,但“职责”和“变化原因”都是不可度量,因项目而异。 好处:
例如:属性、行为分开。 我单纯,所以我快乐。 最佳实践:接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。 2. 里氏替换原则(LSP: Liskov Subsititution Principle)继承优点:代码共享,提高代码重用性,形似父类又异于父类,提高代码的可扩展性,提高项目或产品的开放性 继承缺点:侵入性,降低灵活性,增强耦合性 如何扬长避短?LSP为良好的继承定义了一种规范。 检验标准:只要父类能出现的地方,用子类替换后,不会产生任何异常和错误。说明符合LSP规范。 四层含义:
采用LSP目的:增强程序健壮性,版本升级保持非常好的兼容性。 3. 依赖倒置原则(DIP: Dependence Inversion Principle)
一句话:面向接口编程 采用DIP目的:
依赖三种写法:
最佳实践:
通俗的规则:接口负责定义public属性和方法,并且声明与其他对象的依赖关系;抽象类负责公共构造部分的实现;实现类准确实现业务逻辑,同时在适当时候对父类进行细化。 4. 接口隔离原则(Interface Segregation Principle)定义:建立单一接口,不要建立臃肿庞大的接口。即接口尽量细化,同时接口中的方法尽量少。 与单一职责原则不同。一个从业务角度划分职责;一个是里面的方法不要太多,否则权限控制不便,即与调用者无关的方法都暴露出来了。 4层含义:
最佳实践:
5. 迪米特法则(LoD,Law of Demeter)/最少知识原则(LKP,Least Knowledge Principle)一个对象应该对其他对象有最少的了解。一个类应该对自己需要耦合或调用的类知道得最少,被耦合或调用的类的内部是如何复杂都与我我关,我只知道你提供的public方法,其他我一概不关心。 类内高内聚,类间低耦合。 LoD法则要求尽量“内敛”,尽量不要对外公布太多的public方法和非静态public变量,多使用private,package-private,protected等访问权限。 方法放在本类可以,放在其他类中也没有错,如何衡量?原则:如果一个方法放在本类中,不增加类间关系,也对本类不产生负面影响,就放置在本类中。 6.开闭原则(Open Closed Principle)定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 理解:一个软件实体应该通过扩展来实现变化,而不是通过修改已有代码来实现变化。 开闭原则是最基础的一个原则,前面的五个原则都是开闭原则的具体形态。前五个原则就是指导设计的工具和方法,开闭原则才是精神领袖。 如何使用:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- objective-c – 中心和边界之间的MKCoordinateRe
- 【xml】XmlNode vs XmlElement
- Ajax请求Access-Control-Allow-Origin错误解决
- swift 快速奔跑的兔几 本节的内容是:SceneKit命
- Flex读取xml文件
- Fastjson toJSONString用单引号进行转换
- ruby-on-rails – 适用于Rails应用的移动友好音频
- ruby-on-rails – Rails方法容易受到SQL注入?
- swift – AnyObject如何符合NSObjectProtocol?
- ruby-on-rails – 为什么rake db:在Rails中迁移