常见的设计模式
1.遵循原则
1.1开闭原则
对新增开放,对修改关闭
1.2里氏代换原则
任何基类可以出现的地方,子类都可以出现(子类继承父类的时候,除了添加新方法完成新功能,尽量不要重写父类的方法)
1.3依赖倒转原则
针对抽象编程,不要针对实现编程
1.4接口隔离原则
客户端不应该被迫依赖他不使用的方法,一个类对另一个类的依赖应该建立在最小接口上
1.5迪米特法则
最小知识原则,只和你的朋友说话,不和”陌生人“说话,两个实体类如果不需要强制联系,尽量通过第三方进行联系,比如明星和粉丝,通过经纪人联系。
1.6合成复用原则
尽量使用组合或聚合的方式来实现,其次才考虑使用继承来实现
2.类与类之间的关系
2.1关联关系
单向关联
每一个顾客都有一个地址,用带箭头的直线表示
双向关联
顾客和产品之间的关联 用一条直线表示
自关联
Node类包含自身变量 ,用带箭头的指向自身表示
2.2聚合关系
聚合关系是关联关系中的一种,是强关联关系,是整体和部分之间的关系
聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在,例如,学校和老师的关系,学校包含老师,如果学校不办了,老师依旧存在,空心菱形实线表示 ,菱形指向整体。
2.3组合关系
组合也是整体和部分之间的关系,但是关系更加强烈,在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在了,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了,实心菱形的实线来表示,菱形指向整体。
2.4依赖关系
依赖关系是一种使用关系,是对象之间耦合度最弱的一种关联方式,是临时性的关联,在代码中,某个类的方法通过局部变量,方法的参数或者对静态方法的调用,来访问另一个类(被依赖类)中的某些方法来完成一些职责。
例如司机和汽车,用虚线虚箭头表示
2.5继承关系
类之间耦合度最大的一种关系,父类与子类之间的关系,空心三角箭头实线表示,指向父类
比较熟悉,就不画类图了
2.6实现关系
带空心三角箭头的虚线表示,指向接口
3.设计模式分类
3.1创建型
将对象的创建和使用分离
- 单例模式
- 原型模式
- 工厂方法模式
- 抽象工厂模式
- 建造者模式
3.2结构型
将类和对象按某种布局组成更大的结构
- 代理模式
- 适配器模式
- 桥接模式
- 装饰者模式
- 外观模式
- 享元模式
- 组合模式
3.3行为型
描述类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务
- 模板方法模式
- 策略模式
- 命令模式
- 责任链模式
- 状态模式
- 观察者模式
- 中介者模式
- 迭代器模式
- 访问者模式
- 备忘录模式
- 解释器模式