简单工厂模式的概念、简单工厂模式的结构、简单工厂模式优缺点、简单工厂模式的使用场景、简单工厂模式的实现示例
注:简单工厂模式没有被收录在 GoF 的二十三种设计模式中。
简单工厂模式,与其说是设计模式,不如称它为编程习惯。简单工厂只提供了简单的对象生产能力,且违反了软件设计原则的 开闭原则。其没有被收录在 GoF 的二十三种设计模式中。
抽象产品:
public interface Product {/*** 定义产品行为*/void behavior();
}
具体产品一:
public class OneProduct implements Product {@Overridepublic void behavior() {System.out.println("我是产品一");}
}
具体产品二:
public class TwoProduct implements Product {@Overridepublic void behavior() {System.out.println("我是产品二");}
}
工厂类:
public class ProductFactory {/*** 生产产品* @param type* @return*/public Product product(String type) {Product product;if ("one".equals(type)) {product = new OneProduct();} else if ("two".equals(type)) {product = new TwoProduct();} else {throw new RuntimeException("暂不能生产该类型产品");}return product;}
}
测试类:
public class SimpleFactoryTest {public static void main(String[] args) {ProductFactory factory = new ProductFactory();Product product = factory.product("one");Product product1 = factory.product("two");product.behavior();product1.behavior();Product product2 = factory.product("three");}
}
测试结果:
我是产品一
我是产品二
Exception in thread "main" java.lang.RuntimeException: 暂不能生产该类型产品at org.xgllhz.designpattern.createtype.simplefactory.ProductFactory.product(ProductFactory.java:23)at org.xgllhz.designpattern.createtype.simplefactory.SimpleFactoryTest.main(SimpleFactoryTest.java:19)