设计模式
2021-11-01 11:07:01 14 举报
AI智能生成
设计模式
作者其他创作
大纲/内容
建造/创建型
单例模式
对某个类只能存在一个对象实例
懒汉式
线程不安全懒汉式
线程安全懒汉式
同步代码块懒汉式
子主题
饿汉式
静态常量饿汉式
静态代码块饿汉式
静态内部类
枚举
DCL(双重锁机制)
简单工厂
抽象工厂
建造者
概念
Product
Builder
ConcreteBuilder
Director
注意
客户端不必要知道产品内部的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象
每一个具体的建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或者增加新的具体建造者。用户使用不同的具体建造者即可获得到不同的产品对象
可以更加精细地控制产品的创建过程
增加新的具体建造者无须修改原有的类库代码
如果产品之间的差异性很大,则不适合使用建造者模式
如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大,因此在这种情况下,要考虑是否选择建造者模式.
原型模式
深拷贝和浅拷贝
行为型
适配器模式
类适配器
对象适配器
接口适配器
装饰者模式
代理模式
外观模式
桥接模式
组合模式
享元模式
结构型
策略模式
观察模式
责任链模式
备忘模式
模板模式
迭代模式
中介模式
访问模式
解释模式
状态模式
设计模式
UML基础
基本符号
实体
类
接口
类的关系
依赖(Dependency)
A类使用了B类就是依赖关系
类的成员属性
方法的返回类型
方法接收的参数
方法中使用到
关联(Association)
直线
泛化/继承(Generalization)
是一个依赖关系的特例
A继承B,A和B存在泛化关系
实现(Realization)
接口和实现类的关系
聚合(Aggregation)
聚合是关联关系的一种特例,具有导航性和关联性
整体和部分可以分割
组合(Composition)
整体和部分的关系
整体和部分不可分割
箭头+虚线
空三角+直线
空三角+虚线
空菱形+直线
实心菱形+直线
基本原则
1.单一原则
注意事项
降低类的复杂度,一个类只负责一个功能
提高类的可读性,可维护性
降低变更引起的风险
通常情况,我们应当准守单一原则,只有逻辑足够简单,我们才能在代码级违法单一原则;只有类的方法足够少,我们才能在方法级别保持单一原则
2.接口隔离原则
图片
修改前图片
修改后图片
3.依赖倒转原则
相对于细节的多变性,抽象相对稳定的多。以抽象为基础的架构比细节为基础的架构更加的稳定。在Java中抽象指的是接口和抽象类,细节往往指的是具体的实现类
底层模块金亮都要有抽象类或接口,或者两者都有,程序稳定性更好。变量的声明类型金亮是抽象类或接口,这样我们的变量引用和实际对象间,就存在一个缓冲层,利于程序拓展和优化。继承是遵循里氏替换原则
依赖传递的三种方式
接口传递
构造函数
setter
4.里氏替换原则
所有引用基类的地方必须能透明地使用其子类对象
原来的父类和子类都继承一个更通俗的基类,原有的继承关系去掉,采用依赖,聚合,组合等关系代替
5.开闭原则*
6.迪米特原则
基本介绍
一个对象应该对其他对象保持最少的了解
类与类关系月密切,耦合度越大
类对自己依赖的类知道的越少越好
只与直接的朋友通信
每个对象都会与其他的对象有耦合关系,只要两个对象之间的耦合关系,我们就说两个对象直降是朋友关系。耦合的方式很多,依赖,关联,组合,聚合等。其中,我们称出现成员变量,方法参数,方法返回值中的类为直接朋友,而出现在局部变量中的不是直接的朋友。也就是说,陌生的类最好不要以局部变量的形式出现在类的内部。
7.合成复用原则
概要
设计模式不是代码,是某类问题的解决方案
三种类型,23种
提高了软件的维护性,通用性和拓展性,降低复杂程度
0 条评论
回复 删除
下一页