设计模式的目标
应对各种需求变化,将变化隔离
23种设计模式分类
一、创建型模式
1、工厂方法模式
符合开闭原则
2、抽象工厂模式
增加产品族支持开闭原则,增加产品等级结构不支持开闭原则。
模式应用:操作系统界面主题
3、建造者模式
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以构建不同的表示

相比于抽象工厂模式,建造者模式侧重于一步步构建一个复杂的对象,返回一个完整的对象
增加具体建造者支持开闭原则
4、原型模式
模式应用:复制粘贴
5、单例模式
单例模式虽然简单,但是需要理解为什么单例模式的工厂方法和成员变量都是静态的。
首先,因为要禁止其他程序创建类的对象,单例类的构造函数必须是私有的,那么要怎么创建单例类呢,只有通过类名直接调用类的静态方法才可以,而静态方法不能访问非静态类成员变量,所以成员变量也必须是静态的。
模式应用:任务管理器
二、结构型模式
1、适配器模式
类适配器模式

对象适配器模式

模式应用:JDBC驱动软件
2、桥接模式
桥接模式将抽象部分与实现部分分离。

模式应用:Java虚拟机
3、组合模式
组合模式对单个对象和组合对象的使用具有一致性。
透明组合模式

安全组合模式

模式应用:操作系统目录结构
4、装饰模式
装饰模式分为透明装饰模式和半透明装饰模式
透明装饰模式要求客户端编程全部声明为抽象构件类型,半透明装饰模式允许在客户端声明具体装饰者类型的对象,调用具体装饰者中新增的方法
模式应用:IO流
5、外观模式
为自系统中的一组接口提供一个统一的入口。是“迪米特原则”的体现。

在不引入抽象外观类的情况下,增加新的子系统可能需要修改外观或客户端的源代码,违背了“开闭原则”。
模式应用:网站界面
6、享元模式
使用共享技术来实现大量细粒度对象的复用。
享元模式通常可以和工厂模式、单例模式及组合模式联用
模式应用:String
7、代理模式
保护代理:控制对真实对象的使用权限
远程代理:使得客户端可以访问在远程机器上的对象
虚拟代理:可以使用一个小对象来代表一个大对象,例如由于网速原因不能立即显示图片时,可以先把小图片传送到客户端
模式应用:远程控制
三、行为型模式
1、职责链模式
核心:抽象处理者类

增加新的具体处理者类对原有类库无任何影响,符合开闭原则
模式应用:Java异常处理机制
2、命令模式
按键设置是命令模式的一种典型应用,使按键与接收者解耦

增加新的具体命令无须修改原有系统代码,满足开闭原则
模式应用:Java Swing中的ActionListener充当抽象命令类
3、迭代器模式
迭代器将数据的遍历功能从聚合对象中分离出来,聚合对象只负责存储数据,而遍历数据由迭代器来完成,访问聚合对象的内容无须暴露它的内部表示,迭代器模式是单一职责原则的完美体现

为了实现方便,可以将具体迭代类作为具体聚合类的内部类
增加新的聚合类和迭代器类都无须修改原有代码,满足开闭原则
模式应用:Iterator是聚合框架Collection的迭代器
4、中介者模式
通过引入中介者,可以将系统的网状结构变成以中介者为中心的星状结构,中介者模式是迪米特原则的一个典型应用

模式应用:MVC框架中Controller是Model和View的中介者
5、观察者模式
增加新的具体观察者类符合开闭原则,在具体观察者和观察目标之间不存在关联的情况下,增加新的观察目标也符合开闭原则
模式应用:Java Swing中的ActionListener充当抽象观察者
6、状态模式
状态模式可以将对象状态从包含该状态的类中分离出来,做成一个个单独的状态类

大多数的状态模式都是可以切换状态的状态模式,在具体环境类中可以调用到环境类的setState方法,因此状态类和环境类之间通常还存在关联关系或者依赖关系,可以切换状态的状态模式对开闭原则的支持不太友好,增加状态类需要修改负责转换的源代码,否则无法切换到新增状态
模式应用:网购订单的各种状态
7、策略模式
策略模式是对算法的封装,它把算法的责任和算法本身分割开,委派给不同的对象管理。

策略模式对开闭原则完美支持
模式应用:JFrame可以设置不同的布局策略
本文详细介绍了23种设计模式,包括创建型、结构型和行为型模式。创建型模式如工厂方法、抽象工厂、建造者和单例模式用于对象的创建;结构型模式如适配器、组合、装饰器和代理模式关注类和对象的组合;行为型模式如职责链、命令、迭代器、中介者、观察者、状态和策略模式关注对象行为。设计模式的应用广泛,如JDBC、MVC框架、网站界面和游戏开发等,是软件设计中的重要工具。
719

被折叠的 条评论
为什么被折叠?



