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