一、设计模式的分类:
常用的设计模式分为:创建型模式、结构型模式和行为型模式三种;
1.1 创建型模式:
将系统与的对对象创建、结合、表示的方式分离。这类设计模式在对象创建的类型、主题、方式、时间等方面提高了系统的灵活性^1。
备注:创建型模式的关注点是如何创建对象,其核心思想是把对象的创建和使用分离。
包括:单例、原型、工厂方法、抽象工厂、建造者等5种模式。
1.2 结构型模式:
用于描述将类或对象按照某种布局组合成更大的结构。
包括:代理、适配器、桥接、装饰、外观、享元、组合等7种模式。
1.3 行为型模式:
用于描述类或对象之间相互协作完成单个对象无法完成的任务。
包括:模板、策略、命令、责任链、状态、观察者、中介、迭代器、访问者、备忘录、解释器等11种模式。
二、UML 与 类图
类图是UML (Unified Modeling Language)图的一种,是一种静态结构图,用于描述模型中的类、类的内部结构及类之间的关系。
2.1 类和类之间的关系:
1、依赖(Dependency): 是一种使用关系。对象之间耦合度最弱的一种关联方式。如一个类的方法使用另一个类的对象作为参数。
2、实现(Relization): 接口与实现类之间的关系。
3、聚合(Aggregation): 是整体和个体或部分之间的关系。
4、组合(Composition): 是一种更强烈的整体与部分的关系。整体对象要负责代表整体或个体对象的整体生命周期。个体对象不能脱离整体对象而存在。
5、继承(Inheritance): 对象之间耦合度最强的一种关系,是父类和子类之间的关系。
关联关系(Association): 是类与类之间最常用的一种关系,包括双向关系、单项关联、自关联、多重关联、组合、聚合。
备注:1、继承与实现图示的箭头应该为空心三角形。
2、组合与聚合关系图中,箭头指向整体对象。
三、软件设计原则(SOLID)
3.1 单一职责原则(Single Responsibility Principle):
一个对象应该只包括单一的职责,并且该职责被完整的封装在一个类中。
3.2 开闭原则(Open Close Principle):
对扩展开放,对修改关闭(使用接口和抽象类)。
3.3 里氏替换原则(Liskov Substitution Principle):
任何基类可以出现的地方,子类一定可以出现。
3.4 接口隔离原则(Interface Segregation Principle):
一个类对另一个类的依赖应该建立在最新的接口上。
3.5 依赖倒转原则(Dependency Inversion Principle):
高层模块不应该依赖底层模块,两者都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。即要的抽象进行编程,不要对实现进行编程。
3.6 合成复用原则
类的复用分为继承复用和合成服用两种。尽量使用聚合或组合等关联关系,其次考虑使用继承关系。
继承复用的缺点:
1、破坏了类的封装性。
2、子类与父类的耦合度高。
3、限制了复用的灵活性。