目录
单一职责原则(Single Responsibility Principle,SRP):
开闭原则(Open-Closed Principle,OCP):
里氏代换原则(Liskov Substitution Principle,LSP):
依赖倒转原则(Dependency Inversion Principle,DIP):
接口隔离原则(Interface Segregation Principle,ISP):
合成复用原则(Composite Reuse Principle,CRP):
-
定义
模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案 -
构成
名称,问题描述(待解决的问题是什么)、前提条件(在何种环境或约束条件下使用)、解法(如何解决)和效果(有哪些优缺点) -
设计原则
-
单一职责原则(Single Responsibility Principle,SRP):
一个类只负责一个功能领域中的相应职责。或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。 -
开闭原则(Open-Closed Principle,OCP):
一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。 -
里氏代换原则(Liskov Substitution Principle,LSP):
所有引用基类(父类)的地方必须能透明地使用其子类的对象。 -
依赖倒转原则(Dependency Inversion Principle,DIP):
抽象不应该依赖于细节,细节应该依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。 -
接口隔离原则(Interface Segregation Principle,ISP):
使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。 -
合成复用原则(Composite Reuse Principle,CRP):
尽量使用对象组合,而不是继承来达到复用的目的。 -
迪米特法则(Law of Demeter,LoD):
一个软件实体应当尽可能少地与其他实体发生相互作用 -
类与类关系的UML图示
(1)关联关系:
在UML类图中,用实线连接有关联关系的对象所对应的类,在使用 Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一 个类的成员变量
-
单向关联
-
双向关联
-
自关联
-
多重性关联
-
聚合关系
聚合(Aggregation)关系表示整体与部分的关系。在代码实现聚合关系时,成员对象通常作为构造方法、Setter方法或业务方法的参数注入整体对象中
-
组合关系
组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期。一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。在代码实现组合关系时,通常在整体类的构造方法中直接实例化成员类。
(2)依赖关系
依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。依赖关系通常通过3种方式来实现:第1种也是最常用的一种方式,是将一个类的对象作为另一个类中方法的参数;第2种方式是在一个类的方法中将另一个类的对象作为其局部变量;第3种方式是在一个类的方法中调用另一个类的静态方法
(3)泛化关系:
也就是继承关系,用于描述父类与子类之间的关系。
(4)接口与实现关系
设计模式的分类