经过这一段时间的学习,懂得了很多有关设计模式的知识,现在进行一下总结。那么就让我们先来学习基础知识——设计模式的六原则
1.单一职责原则
应该有且只有一个原因引起类的变化。
比如说MP3,我们仅仅只让它用来听音乐用、照相机只是让它来照相用,我举MP3也好照相机也好仅仅是为了让大家更好的理解什么是单一职责原则。在我们编程中,单一职责原则是说,一个类应该仅有一个引起它变化的原因,也就是让一个类实现的功能尽可能单一,如果我们在类的职责上分离上能尽可能的到位的话,我们的代码才能够做到易维护、易扩展、易复用。
2.里氏替换原则
只要父类能出现的地方,其子类就应该能出现。也就是用子类替换父类后,保证程序照样运行。
一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化,简单的说,子类型必须能够替换它们的父类型。
3.依赖倒转原则
面向接口编程。
A:高层模块不应该依赖低层模块。两个都应该依赖抽象。 B:抽象不应该依赖细节,细节应该依赖于抽象。也就是说,要针对接口编程,不要对实现编程。
4.合成/聚合复用原则(CARP)
尽量使用合成/聚合,尽量不要使用类继承
聚合关系(Aggregation)聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。组合关系(Composition)组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束。接下来看一个例子
合成/聚合复用原则(CARP的好处是:
优先使用对象的合成/聚合将有利于你保持每个类被封装,并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不可能增长为不可控制的庞然大物。
5.迪米特法则
也称为最少知识原则,其定义为:一个对象应当对其他对象有最少的了解。也就是一个类中不要有过多的其他类。
如果两个类不必彼此直接通信,那么这两个类就不应当发生直接打相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
强调的是在类的结构设计上,每一个类都应当尽量降低成员的访问权限。其根本思想强调了类之间的松耦合。类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。
6.开闭原则
一个软件实体(如类,模块,和函数)应该对扩展开放,对修改关闭。
开放-封闭原则表达的是两个意思,一个是说对于扩展是开放的,另一个是说对于更改是封闭的。扩展开放是说,我们所写的代码应该拥有扩展的功能,在编写代码时就要考虑将来扩展的可能性,因为需求随时都可能变更,所以我们要在原有代码的基础上,进行增加功能。而更改是封闭的是说,对代码进行需求变更是,不能对代码中已经存在的类、模块、函数等进行修改,需求变更是通过增加新代码而不是更改原有的代码。