设计模式原则

设计模式原则

1. 单一职责原则(SRP)

单一职责原则(Single Responsibility Principle,SRP)是指一个类只负责一项职责,如果类承担的职责过多,就会导致可维护性变差,不易复用,容易变得庞大臃肿。因此应当遵循单一职责原则,将一个类的职责分解成多个类,每个类只负责一项职责,这样可以降低类的复杂度,提高代码的可读性和可维护性。

2. 开闭原则(OCP)

对扩展开放,对修改关闭

开闭原则(Open Close Principle,OCP)是一种软件设计原则,它的含义是:软件实体(类、模块、函数)应该对扩展开放,对修改关闭。

开闭原则的实现方式有两种:

(1)抽象化:定义抽象类,由它来维护子类,实现继承。开发人员只需继承抽象类即可扩展,而无
需修改抽象类或者已有子类。

(2)封装性:将可能发生变化的因素封装起来,不让外界访问。开发人员只需要修改封装的内部实
现代码,而无需改变对外提供的接口。

开闭原则的优点:

(1)可以减少系统的修改量,提高程序的可维护性,使系统更加健壮。

(2)可以提高软件系统的可扩展性,提高软件开发的效率。
在这里插入图片描述

简单来说就是多态实现,尽量使用接口和抽象类

3. 里氏代换原则(LSP)

里氏代换原则(Liskov Substitution Principle,简称LSP),又叫里氏替换原则,是面向对象设计的基本原则之一。

原则的定义是:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1上都能正确地执行,那么类型T2的对象o2也能代替类型T1的对象o1,程序P在类型T2的对象o2上也能正确地执行。

里氏代换原则要求:

1、所有引用基类的地方必须能透明地使用其子类的对象。

2、子类可以扩展父类的功能,但不能改变父类原有的功能。

3、子类中可以增加新的方法,但不能删除父类中的方法。

里氏代换原则的核心思想是:子类必须完全实现父类的方法,并且不能破坏父类原有的功能,这样才能满足调用父类方法的程序可以正确地运行。

里氏替换原则是对“开-闭”原 则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实 现,所以里氏替换原则是对实现抽象化的具体步骤的规范。

4. 依赖倒转原则(DIP)

依赖倒转原则(Dependency Inversion Principle,简称DIP)是面向对象设计中最重要的原则之一 。它指导我们如何建立模块间的依赖关系,它要求我们在软件系统中尽量使用抽象而非现实的概念,这样能够降低系统的耦合度,提高系统的灵活性和可维护性。

依赖倒转原则的主要思想是:高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

1、抽象不应该依赖细节:抽象是高层模块和底层模块的桥梁,抽象的定义应该比细节要抽象,抽象 指的是接口或抽象类,而不是具体的实现类。

2、细节应该依赖抽象:也就是说,细节的实现应该依赖抽象,而不是依赖具体的实现类。

3、高层模块不应该依赖底层模块:两个高层模块不应该有直接的依赖关系,它们都应该依赖抽象。

4、二者都应该依赖其抽象:高层模块和底层模块都应该依赖抽象来进行解耦,这样的设计可以降低 类与类之间的耦合度,提高系统的可维护性和可扩展性。

5. 接口隔离原则(ISP)

接口隔离原则(Interface Segregation Principle,ISP)是面向对象设计原则之一,它由美国软件工程 师Robert C. Martin提出,它的定义是:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

接口隔离原则的本质是:尽量把一个类的接口设计的小而精,当类A依赖类B的时候,只让它使用B的 必要的接口,而不让它使用B的所有接口。

接口隔离原则的主要目的是保证程序的模块化,降低类之间的耦合性,提高系统的可维护性和可扩展性,还能够防止某些历史性的原因导致的bug。

实现接口隔离原则的方法有两种:

(1)通过多个接口来实现接口隔离原则,把一个类的功能拆分成多个接口,这样客户端就只需要依 赖其所需要的接口,而不是整个类,这样就可以降低类之间的耦合性;

(2)使用Adapter模式(适配器模式)来实现接口隔离原则,即把客户端需要的接口适配成类B所提 供的接口,从而把客户端和类B解耦。

6. 迪米特法则(LoD)

迪米特法则,又称最少知识原则(Law of Demeter,LoD),是一种简单而强大的软件设计原则,由 迪米特(Demeter)命名,它强调一个软件实体应当尽量少地与其他实体发生相互作用。

具体来说,在软件设计中,每一个对象都应当尽量少地了解其他对象的细节,也就是说,一个对象应当只和直接的朋友发生联系,而不和朋友的朋友发生联系。

迪米特法则能够减少耦合,提高系统的可维护性、可维护性和可扩展性,使系统更加灵活。迪米特法则的实现可以通过封装、继承等手段来实现,从而使系统更加模块化、易于维护和扩展。

实现细节对外隐藏,只开放接口

7. 合成复用原则(CRP)

合成复用原则(Composite Reuse Principle, CRP):尽量使用合成/聚合的方式,而不是使用继承 。

高内聚、低耦合

合成复用原则是面向对象编程中最重要的原则之一。它建议,应该通过合成和聚合组合对象,而不是通过继承来复用对象。

合成复用原则的核心思想就是,程序中的对象应该尽量使用合成/聚合的方式来关联,而不是使用继 承。这样做的优点有:

  1. 避免了类爆炸式增长,继承会导致子类的爆炸式增长,而使用合成/聚合的方式可以有效的避免这种情况的发生。

  2. 更加灵活,使用继承的方式会使对象之间的关系变的死板,而使用合成/聚合的方式可以使这种关系十分灵活。

  3. 更容易扩展,使用合成/聚合的方式可以很容易的进行扩展,而使用继承的方式就不容易进行扩展了。

  4. 减少耦合,通过使用合成/聚合的方式可以减少耦合,而使用继承的方式就会导致耦合性增加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值