徐州丰县建设局网站,江西省农村公路建设举报网站,宣传册在线设计,如何做点对点视频网站简单工厂模式#xff08;Simple Factory Pattern#xff09;是一种创建型设计模式#xff0c;它提供了一个通用的接口来创建各种不同类型的对象#xff0c;而无需直接暴露对象的创建逻辑给客户端。
简单工厂的三个重要角色#xff1a;
工厂类#xff08;Factory ClassSimple Factory Pattern是一种创建型设计模式它提供了一个通用的接口来创建各种不同类型的对象而无需直接暴露对象的创建逻辑给客户端。
简单工厂的三个重要角色
工厂类Factory Class负责创建具体产品的实例。它通常包含一个静态方法根据不同的参数返回不同的具体产品实例。 抽象产品类Abstract Product Class定义了具体产品的共同接口或抽象类所有具体产品都实现该接口或继承自该抽象类。 具体产品类Concrete Product Class实现了抽象产品类定义的接口或继承了抽象产品类。
简单工厂模式的使用步骤如下
定义好抽象产品类和具体产品类。 创建工厂类其中包含一个静态方法根据不同的参数返回不同的具体产品实例。 在客户端中通过调用工厂类的静态方法来获取具体产品的实例。
简单工厂的实践
当实践简单工厂模式时首先需要创建一个工厂类该类负责根据不同的条件来创建并返回具体的产品实例。
以下是一个示例的简单工厂模式的代码实现
// 定义产品接口
interface Product {void operation();
}// 具体产品A
class ConcreteProductA implements Product {Overridepublic void operation() {System.out.println(具体产品A的操作);}
}// 具体产品B
class ConcreteProductB implements Product {Overridepublic void operation() {System.out.println(具体产品B的操作);}
}// 工厂类
class SimpleFactory {// 根据传入的参数创建具体产品的实例public static Product createProduct(String productType) {if (productType.equalsIgnoreCase(A)) {return new ConcreteProductA();} else if (productType.equalsIgnoreCase(B)) {return new ConcreteProductB();} else {return null;}}
}// 使用示例
public class Main {public static void main(String[] args) {// 创建产品AProduct productA SimpleFactory.createProduct(A);productA.operation(); // 输出具体产品A的操作// 创建产品BProduct productB SimpleFactory.createProduct(B);productB.operation(); // 输出具体产品B的操作}
}在上述示例中Product 是产品接口ConcreteProductA 和 ConcreteProductB 是具体产品类。SimpleFactory 是工厂类其中的 createProduct 方法根据传入的参数来创建并返回具体产品的实例。
在 Main 类中我们通过调用工厂类的 createProduct 方法来创建不同类型的产品实例并进行相应的操作。 在上述示例中Product 是产品接口ConcreteProductA 和 ConcreteProductB 是具体产品类。SimpleFactory 是工厂类其中的 createProduct 方法根据传入的参数来创建并返回具体产品的实例。 在 Main 类中我们通过调用工厂类的 createProduct 方法来创建不同类型的产品实例并进行相应的操作。
简单工厂模式的优缺点
简单工厂模式的优点 封装了对象的创建逻辑通过使用简单工厂模式可以将对象的创建逻辑封装到一个工厂类中客户端只需要知道如何使用工厂类来获取所需的对象而不需要关心具体的对象创建过程。 降低了客户端与具体产品类之间的耦合度客户端只依赖于抽象产品类和工厂类不需要直接与具体产品类打交道从而降低了耦合度使得系统更加灵活和可维护。 提供了一种简单且通用的方式创建对象简单工厂模式可以根据传入的参数或条件来动态创建不同类型的对象从而提供了一种简单且通用的方式来创建对象。 简单工厂模式的缺点 不符合开闭原则当需要新增加新的具体产品类时需要修改工厂类的代码违反了开闭原则对扩展开放对修改关闭。 工厂类职责过重在简单工厂模式中工厂类负责创建所有的具体产品对象随着具体产品类的增多工厂类的职责会变得很重导致代码复杂化。 不易于扩展和维护随着具体产品类的增加工厂类的代码会不断膨胀不易于扩展和维护。