03设计模式——简单工厂模式
前言:以下总结来自龙哥---左潇龙博客。
总结的很到位,附上博客链接:http://www.cnblogs.com/zuoxiaolong/p/pattern4.html
定义:从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。
简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
上面总共有三种类,一个是工厂类Creator,一个是产品接口IProduct,一个便是具体的产品,例如产品A和产品B,这之中,工厂类负责整个创建产品的逻辑判断,所以为了使工厂类能够知道我们需要哪一种产品,我们需要在创建产品时传递给工厂类一个参数,去表明我们想要创建哪种产品。
1 /** 2 * 产品接口 3 */ 4 public interface IProduct { 5 6 /** 7 * 生产产品 8 * 时间:2018-4-13 上午11:00:38 9 * 作者:西忒乐 10 */ 11 void method(); 12 }
1 /** 2 * A产品 3 */ 4 public class ProductA implements IProduct { 5 6 @Override 7 public void method() { 8 System.out.println("生产A产品的方法"); 9 } 10 11 }
/** * B产品 */ public class ProductB implements IProduct { @Override public void method() { System.out.println("生产B产品的方法"); } }
1 /** 2 * 工厂类 3 */ 4 public class Factory { 5 6 /** 7 * 生产产品 8 */ 9 public IProduct createProduct(String productName) { 10 if (productName == null) { 11 return null; 12 } 13 if (productName.equals("A")) { 14 return new ProductA(); 15 } else if (productName.equals("B")) { 16 return new ProductB(); 17 } else { 18 return null; 19 } 20 } 21 }
1 /** 2 * 创建工厂类 3 */ 4 public enum Creator { 5 INSTANCE;// public static final 6 private Factory factory; 7 8 Creator() { 9 factory = new Factory(); 10 } 11 12 public Factory getInstance() { 13 return factory; 14 } 15 }
1 /** 2 * 测试 3 */ 4 public class Main { 5 6 public static void main(String[] args) { 7 Factory factory = Creator.INSTANCE.getInstance(); 8 IProduct product = factory.createProduct("A"); 9 product.method(); 10 } 11 }