设计模式之简单工厂模式
简单工厂模式不是一个正式的设计模式,但它是工厂模式的基础。它使用一个单独的工厂类来创建不同的对象,根据传入的参数决定创建哪种类型的对象。
简单工厂模式包含以下几个主要角色:
- 抽象产品(Abstract Product):定义了产品的共同接口或抽象类。它可以是具体产品类的父类或接口,规定了产品对象的共同方法。
-
具体产品(Concrete Product):实现了抽象产品接口,定义了具体产品的特定行为和属性。
-
具体工厂(Concrete Factory):根据不同的参数决定创建哪种类型的对象。
优点
- 调用者只需要知道对象的名称即可创建对象。
- 屏蔽了产品的具体实现,调用者只关心产品的接口。
缺点
每次增加一个产品时,都需要修改具体工厂中的代码,违反了OCP开闭原则
代码案例
public class SimpleFactory { public static Product createProduct(String type) { // 新增其他产品就得修改代码 if ("A".equals(type)) { return new ProductA(); } else { return new ProductB(); } }
} abstract class Product { public abstract void show();
} class ProductA extends Product { @Override public void show() { System.out.println("Product A"); }
} class ProductB extends Product { @Override public void show() { System.out.println("Product B"); }
} class Client { public static void main(String[] args) { Product product = SimpleFactory.createProduct("A"); product.show(); product = SimpleFactory.createProduct("B"); product.show(); }
}
程序输出
Product A
Product B