Java中23种经典设计模式
时间:2025-05-13
时间:2025-05-13
Java中23种设计模式
目录
1. 设计模式 ........................................................................................................................................ 2
1.1 创建型模式 .......................................................................................................................... 2
1.1.1 工厂方法 ................................................................................................................... 2 1.1.2 抽象工厂 ................................................................................................................... 4 1.1.3 建造者模式 ............................................................................................................... 8 1.1.4 单态模式 ................................................................................................................. 11 1.1.5 原型模式 ................................................................................................................. 13 1.2 结构型模式 ........................................................................................................................ 15
1.2.1 适配器模式 ............................................................................................................. 15 1.2.2 桥接模式 ................................................................................................................. 17 1.2.3 组合模式 ................................................................................................................. 20 1.2.4 装饰模式 ................................................................................................................. 24 1.2.5 外观模式 ................................................................................................................. 26 1.2.6 享元模式 ................................................................................................................. 30 1.2.7 代理模式 ................................................................................................................. 32 1.3 行为型模式 ........................................................................................................................ 35
1.3.1 责任链模式 ............................................................................................................. 35 1.3.2 命令模式 ................................................................................................................. 38 1.3.3 解释器模式 ............................................................................................................. 41 1.3.4 迭代器模式 ............................................................................................................. 43 1.3.5 中介者模式 ............................................................................................................. 47 1.3.6 备忘录模式 ............................................................................................................. 50 1.3.7 观察者模式 ............................................................................................................. 52 1.3.8 状态模式 ................................................................................................................. 56 1.3.9 策略模式 ................................................................................................................. 59 1.3.10 模板方法 ............................................................................................................... 61 1.3.11 访问者模式 ........................................................................................................... 63
1. 设计模式(超级详细) 1.1 创建型模式
AbstractFactory ( 抽象工厂 ) FactoryMethod ( 工厂方法 ) Singleton ( 单态模式 ) Builder ( 建造者模式 ) Protot*pe * 原型模式 )
1.1.1 工厂方法
*义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例*延迟到其子类。
适用性
1.当一个类不知道它所必须创建的对象的类的时候。
2.当一个类希望由它的子类来指定它所创建的对象的时候。
3.当*将创建对象的职责委托给多个帮助*类中的某一个,并且*希望将哪一个帮助子类是代理者这一信息局部化的时候。
参与者
1.Product
定义工厂方法所创建的对象的接口。
2.ConcreteProduct 实现Product接口。
3.Creator
声明工厂方法,该方法返回一个Product类型的对象*
Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。
可以调用工厂方法以创建一个Product对象。
4.ConcreteCreator
重定义工厂方法以返回一个ConcreteProduct实例。
类图
例子 *roduct
public interface Work {
void doWork(); }
ConcreteProduct
public class StudentWork implements Work {
public void doWork() {
System.out.println("学生*作业!"); } }
public class TeacherWork implements Work {
public void doWork() {
System.out.println("老师审批作业!"); } }
Creator
public interface IWorkFactory {
Work get*ork(); }
Concre*eCreator
pu*lic class StudentWorkFactory implements IWorkFactory {
public Work getWork() {
*eturn new StudentWork(); } }
public class TeacherWorkFactory implements IWorkFactory {
public Work getWork() {
return new TeacherWork(); } }
Test
public class Test {
public static void m*in(Strin*[] args) {
IWorkFactory studentWorkFactory = new StudentWorkFactory(); st …… 此处隐藏:9066字,全部文档内容请下载后查看。喜欢就下载吧 ……