【设计模式】-六大原则

前言:

  中国人办事讲究依据,编程也不例外,那么如何能最大程度的达到高性能,可复用,便于维护降低相应成本的目的呢,就是要依靠原则办事啦,下面就这五大原则进行简单的总结;


1、单一职责原则

  • 定义

  就一个类而言应该仅有引起它变化的原因;一个类如果承担的职责过多,也就相当于把所有的职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力,而这种设计,当变化发生时整个都会受到不同程度的破坏;

  • 举例

  个人觉得这根咱们常说的术业有专攻有异曲同工之妙,相机就是用来拍照的,手机虽然也具备相应的功能,但却不能将该功能发挥到极致;

  • 作用

  编程上要使用到单一职责,做到职责分离,更大程度的达到代码复用,使系统的设计更加灵活,易维护;

2、开放-封闭原则-简单工厂模式

  • 定义

  软件实体(类,模块,函数等)应该是可以扩展的,但是不可修改;需要构造抽象来隔离一些可能发生的变化,达到易维护,可扩展,可复用,灵活性好的目的;

  • 特征

  对于扩展是开放的,对于修改是封闭的;

3、依赖倒转原则-面向对象设计的标志

  • 定义

  抽象不应该依赖细节,细节应该依赖于抽象 换句话说就是要针对接口编程而不是针对实现

  • 举例

  我们都给电脑加过内存条和固态,电脑的内存条,硬盘都是针对接口设计的,如果是针对实现设计,那么我们想要改变内存或者是提升电脑运行速度,就需要更换电脑主板或者是重新更换电脑啦;

4、里式代换原则

  • 定义

  子类型必须能够替换掉他们的父类型;简单来说就是一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它感觉不到子类对象与父类对象的区别,也就是说,在软件中,将父类替换成子类,相应当实现行为是不会变化的;

  • 举例

  都说设计模式和生活是相同的,越学习越觉得貌似是这样的,每一个模式和原则都是生活的抽象,夏天爱吃桃子,桃子是水果吧,但是我们不能说水果就是桃子,桃子、苹果、香蕉等都继承与水果这个父类;

5、合成/聚合复用原则

  • 定义

  尽量使用合成/聚合,尽量不要使用类继承;优先使用对象的合成/聚合而不是类的继承;
聚合:是一种弱的“拥有”关系,—体现了A对象可以包含B对象,但B对象不是A对象的一部分;
组合:是一种强的“拥有”关系,—体现了严格的部分与整体的关系,部分与整体的生命周期一样;

  • 说明

  区分:is-a 与has-a 的关系,is-a 是指一个类是另一个类的一种,has-a 是指一个角色拥有某项责任或一种事物拥有某一部分,是一种拥有关系;

6、迪米特法则

  • 定义

  如果两个类不比彼此直接通信,那么这两个类就不应当发生直接的相互作用,若果其中一个类需要调用另一个类的某一个方法的话,通过第三者转发这个调用,强调了类之间的松耦合;

  • 举例

  我们有十多个委员会,每个月都有相应的部门负责人,对于每一个部门内部,每个人都有自己相应的职责范围,比如说我们要借用工具,但是又不太清楚工具部门每个人具体负责啥,谁来负责工具的使用和借出等,但是通过今目标我可以了解到当月谁是负责人,那么这个借工具的事情就顺利的解决啦;


小结:

  有原则有依据,事情才好办,编程才好更精准的实现,以达到高性能,易维护,可扩展,可复用的目的;

你可能感兴趣的:(设计模式)