今天公司大牛讲解案例桥接模式,由桥接模式想到了设计模式的6大原则。个人设计模式的理解总结以下:
最近这刚开始看设计模式,当然是从最基本的6大原则看起,所有的设计模式也基本上都是围绕着这六大设计原则实现的。
6大设计原则分别是:Single Responsible Principle 单一职责原则
Liskov Substitution Principle 里氏替换原则
Open Closed Principle 开闭原则
Law of Demeter 迪米特法则
Interface Segregation Principle 接口隔离原则
Dependence Inversion Principle 依赖倒置原则
这6个原则的首字母(里氏替换原则和迪米特法则的首字母重复,只取一个)联合起来就是SOLID(稳定的),其代表的含义也就是把这6个原则结合使用的好处:建立稳定,灵活,健壮的设计。
而开闭原则又是重中之重,是最基础的原则,是其他五大原则的精神领袖。要理解23中设计模式,先要理解这6大设计原则。以下原则的解释也是我在百度上抠的,个人感觉好好理解开闭原则,其他的就好懂了。其实最重要的原则就是稳定,灵活,健壮。
开闭原则:对扩展开放,对修改关闭。就是原有的方法或模块尽量不要修改,可以新建方法或模块。实现开闭原则的关键就在于“抽象”。把系统的所有可能的行为抽象成一个抽象底层,这个抽象底层规定出所有的具体实现必须提供的方法的特征。作为系统设计的抽象层,要预见所有可能的扩展,从而使得在任何扩展情况下,系统的抽象底层不需修改;同时,由于可以从抽象底层导出一个或多个新的具体实现,可以改变系统的行为,因此系统设计对扩展是开放的。理解了开闭原则对下面几个原则的理解也会起到很大助力。
单一职责原则:单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。单一职责原则的核心就是降低耦合和增强内聚,个人感觉重在增强内聚。
里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。个人理解里氏替换原则主要是针对继承的(目前我能想到的只有继承~)。
迪米特法则:又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。此法则主要是为了降低类之间的耦合,减少依赖。目前还不是很理解这个法则,需要结合实际慢慢体会。
接口隔离原则:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
依赖倒置原则:A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。B.抽象不应该依赖于具体实现,具体实现应该依赖于抽象。面向过程的开发,上层调用下层,上层依赖于下层,当下层剧烈变动时上层也要跟着变动,这就会导致模块的复用性降低而且大大提高了开发的成本。面向对象的开发很好的解决了这个问题,一般情况下抽象的变化概率很小,让用户程序依赖于抽象,实现的细节也依赖于抽象。即使实现细节不断变动,只要抽象不变,客户程序就不需要变化。这大大降低了客户程序与实现细节的耦合度。