设计原则

单一职责原则(SRP)
描述:就一个类而言,应该仅有一个引起它变化的原因。
应用:在构造对象时,将对象的不同职责分离至两个或多个类中,确保引起该类变化的原因只有一个。
带来的好处:提高内聚、降低耦合。
用通俗的话说:就是一个类只能做一件事.
在设计模式中用到的主要是:策略模式,状态模式,观察者模式.

开放-封闭原则(OCP)

描述:"对于扩展是开放的"(Open for extension)。这意味着模块的行为是可以扩展的。

当应用的需求改变时,可以对模块进行扩展,使其具有满足改变的新行为。也就是说,我们可以改变模块的功能。

"对于更改是封闭的"(Close for modification)。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。
应用:高级语言中的接口与虚拟类。
带来的好处:提高灵活性、可重用性、可维护性。
个人观点:OCP的关键是抽象,抽象的目的是创建一个固定却能够描述一组任意个可能行为的基类。而这一组可能的行为则表现为派生类。对于基类的更改是封闭的,所以它里边的方法一旦确定就不能更改(对接口里的方法进行更改将带来灾难性的后果)。
模块通过抽象基类进行引用,对派生类的扩展并不影响整个模块,所以它是开放的。遵循OCP的代价也是昂贵的,创建正确的抽象是要花费开发时间和精力的,同时抽象也增加了软件设计的复杂性。因此有效的预知变化是OCP设计的要点,这需要我们进行适当的调查,提出正确的问题,并利用我们的经验和一般常识来做出判断。正确的做法是,只对程序中频繁变化的部分做出抽象,拒绝不成熟的抽象和抽象本身一样重要。
在设计模式中用到的主要是:策略模式,观察者模式.

Liskov替换原则(LSP)
描述: 父类的方法都要在子类里实现或者重写,不允许子类出现父类所没有定义的方法.
在设计模式中用到的主要是:组合模式.

依赖倒置原则(DIP)
描述:
A .高层模块不应该依赖于低层模块。二者都应该依赖于抽象。
B .抽象不应该依赖于细节。细节应该依赖于抽象。
应用:要依赖抽象,不要依赖于具体。即针对接口编程,不要针对实现编程。
针对接口编程的意思是,应当使用接口和抽象类进行变量的类型声明、参量的类型声明,方法的返还类型声明,以及数据类型的转换等。不要针对实现编程的意思就是说,不应当使用具体类进行变量的类型声明、参量的类型声明,方法的返还类型声明,以及数据类型的转换等。
在设计模式中用到的主要是:模板模式,观察者模式.
通俗的话说:只能子类调用父,不能父类调用子类.

接口隔离原则(ISP)
描述:不要强迫客户依赖于它们不用的方法。
应用:如果客户端只需要某一些方法的话,那么就应当向客户端提供这些需要的方法,而不要提供不需要的方法。
结论:使用多个专门的接口比使用单一的接口要好。
最经典的实例:适配器中的对象适配器。

迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解, 不和陌生人说话。英文简写为: LoD.
门面模式就是迪米特法则的应用。
通俗的说:将用户不用的方法私有化,将不变的字段用final来修饰.

抽象类和接口的区别:
抽象类是一个类.
接口是一种行为,接口是类的一部分.
接口比抽象类的扩展性更好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值