### Java设计模式总结 #### 一、概述 Java设计模式是一种在软件开发过程中用来解决常见问题的方法论。本文档详细介绍了23种经典的设计模式,这些模式被广泛应用于Java编程中,以提高代码的可复用性和灵活性。下面将对这23种模式进行详细介绍。 #### 二、创建型模式 创建型模式主要关注的是对象的创建方式,目的是将对象的创建过程封装起来,以提高系统的灵活性和扩展性。 ##### 1.1 工厂方法模式 **定义**:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method模式使一个类的实例化延迟到其子类。 **适用性**: 1. 当一个类不知道它所必须创建的对象的类的时候。 2. 当一个类希望由它的子类来指定它所创建的对象的时候。 3. 当需要将创建对象的职责委托给多个帮助子类中的某一个,并且希望将哪一个帮助子类是代理者这一信息局部化的时候。 **参与者**: - **Product**:定义工厂方法所创建的对象的接口。 - **ConcreteProduct**:实现Product接口。 - **Creator**:声明工厂方法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。 - **ConcreteCreator**:重定义工厂方法以返回一个ConcreteProduct实例。 **类图**(示例代码): ```java // Product 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 getWork(); } // ConcreteCreator public class StudentWorkFactory implements IWorkFactory { public Work getWork() { return new StudentWork(); } } public class TeacherWorkFactory implements IWorkFactory { public Work getWork() { return new TeacherWork(); } } // Test public class Test { public static void main(String[] args) { IWorkFactory studentWorkFactory = new StudentWorkFactory(); studentWorkFactory.getWork().doWork(); IWorkFactory teacherWorkFactory = new TeacherWorkFactory(); teacherWorkFactory.getWork().doWork(); } } ``` **结果**: ``` 学生做作业! 老师审批作业! ``` ##### 1.2 抽象工厂模式 **定义**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 **适用性**: 1. 一个系统要独立于它的产品系列的创建、组合和表示时。 2. 一个系统要由多个产品系列中的一个来配置时。 3. 当你需要强调一系列相关的产品对象的设计以便进行联合使用时。 4. 当你提供一个产品类库,而只想显示它们的接口而不是实现时。 **参与者**: - **AbstractFactory**:声明一个创建抽象产品对象的操作接口。 - **ConcreteFactory**:实现创建具体产品对象的操作。 - **AbstractProduct**:为一类产品对象声明一个接口。 - **ConcreteProduct**:定义一个将被相应的具体工厂创建的产品对象。实现AbstractProduct接口。 - **Client**:仅使用由AbstractFactory接口所提供的方法。 **类图**(示例代码): ```java // AbstractFactory public interface IProductFactory { ProductA createProductA(); ProductB createProductB(); } // ConcreteFactory public class ConcreteFactory1 implements IProductFactory { @Override public ProductA createProductA() { return new ProductA1(); } @Override public ProductB createProductB() { return new ProductB1(); } } public class ConcreteFactory2 implements IProductFactory { @Override public ProductA createProductA() { return new ProductA2(); } @Override public ProductB createProductB() { return new ProductB2(); } } // AbstractProduct public interface ProductA {} public interface ProductB {} // ConcreteProduct public class ProductA1 implements ProductA {} public class ProductA2 implements ProductA {} public class ProductB1 implements ProductB {} public class ProductB2 implements ProductB {} // Client public class Client { private ProductA productA; private ProductB productB; public Client(IProductFactory factory) { this.productA = factory.createProductA(); this.productB = factory.createProductB(); } } ``` 以上介绍了创建型模式中的工厂方法模式和抽象工厂模式。接下来将继续介绍其他设计模式。
- 粉丝: 0
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助