设计模式六大原则

一、单一职责原则

定义:一个类只负责一个功能领域中的相应职责。

在开发中,一个类愈是集成多的功能,凝聚多的职责,这个类的复用性,可扩展性就愈弱。因此,我们在开发某个软件的各个功能模块时,尽量使一个类就负责履行具体某一类的职责,实现其应有的功能。

单一职责原则是软件开发中高内聚,低耦合的指导方针。开发过程应紧紧围绕这一方针进行,这有利于软件的后期维护。

二、开闭原则

定义:一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。

在开发中,一个模块的修改若引发另一模块代码需要被修改,甚至引发多个模块代码需要被修改,从某种程度上来说,这样的代码是很失败的。我们在开发功能模块的过程中,能够不修改代码,就尽量不修改代码。当然,扩展功能从某种程度上来说只是添加代码,为软件添加新的特性、功能,这是没问题的。符合开闭原则的代码应是这样的:扩展功能模块的同时,几乎不需要修改其他模块的源代码。

实现方式:抽象化是遵循开闭原则的关键。将公共的部分抽象(抽象类,接口),对具体的部分扩展。

三、里氏替换原则

定义:所有引用基类(父类)的地方必须能透明地使用其子类的对象。

狗一定是动物,动物就一定是狗吗?显然,动物 ≠ 狗。

里氏代换原则是遵循开闭原则的重要方式之一

在软件开发中,尽量使用父类(接口)声明子类对象(实现类对象)

四、依赖倒置原则

定义:抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。

依赖倒转原则要求我们在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情。为了确保该原则的应用,一个具体类应当只实现接口或抽象类中声明过的方法,而不要给出多余的方法,否则将无法调用到在子类中增加的新方法。

五、接口隔离法则

定义:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

假设接口中若定义了非常非常多的抽象方法,一个类若企图实现这个接口,使得编译通过,就必须实现接口中的所有方法!这是多么糟糕的事情!在使用接口隔离原则时,我们需要注意控制接口的粒度,接口不能太小,如果太小会导致系统中接口泛滥,不利于维护;接口也不能太大,太大的接口将违背接口隔离原则,灵活性较差,使用起来很不方便。因此,接口应该专业化,在接口方法数量与接口数量中做一个合适的平衡,在接口方法与接口数量之间做妥协。

定义一个接口之前,要把定义接口想成最极端的事,即接口定义了后就不能再去修改(虽然的确可以修改,但建议不要去修改,遵循开闭原则)。

六、迪米特法则

定义:一个软件实体应当尽可能少地与其他实体发生相互作用。

迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系。迪米特法则还有几种定义形式,包括:不要和“陌生人”说话、只与你的直接朋友通信等,在迪米特法则中,对于一个对象,其朋友包括以下几类:

1)当前对象本身(this);

2)以参数形式传入到当前对象方法中的对象;

3)当前对象的成员对象(成员内部类);

4)当前对象的成员对象是一个集合;

5)当前对象所创建的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用介绍了依赖倒转原则,即高层模块不应该依赖低层模块,二者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖抽象。依赖倒转原则的中心思想是面向接口编程,以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在Java中,抽象指的是接口或抽象类,而细节指的是具体的实现类。使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,将展现细节的任务交给实现类去完成。 引用介绍了迪米特法则,也称为最少知道原则。迪米特法则指出一个对象应该对其他对象保持最少的了解。类与类关系越密切,耦合度越大。要将逻辑封装在类的内部,对外除了提供的public方法,不对外泄露任何信息。直接的朋友指的是在成员变量、方法参数、方法返回值中出现的类,而不是局部变量中出现的类。 引用介绍了合成/聚合原则,它建议尽量使用合成/聚合的方式,而不是使用继承。合成/聚合可以通过创建一个对象同时创建另一个对象,或者使用set方法来实现。 Java设计模式六大原则包括: 1. 单一职责原则(Single Responsibility Principle):一个类应该只有一个引起变化的原因。 2. 开放封闭原则(Open Closed Principle):软件实体应该是可以扩展的,但是不可修改的。 3. 里氏替换原则(Liskov Substitution Principle):子类对象应该能够替换其基类对象,而不会影响程序的正确性。 4. 接口隔离原则(Interface Segregation Principle):应该建立单一接口,而不是多个臃肿的接口。 5. 依赖倒转原则(Dependency Inversion Principle):高层模块不应该依赖低层模块,二者都应该依赖其抽象。 6. 合成/聚合原则(Composition/Aggregation Principle):尽量使用合成/聚合的方式,而不是使用继承。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值