简单工厂模式学习

2019-06-09  本文已影响0人  二毛_220d
package com.java.ntt.designPatterns.SimpleFactory;

/**
 * @author niutongtong
 */
public interface Product {
  void  getName();
}

package com.java.ntt.designPatterns.SimpleFactory;

/**
 * @ClassName ConcreteProduct
 * @Description
 * @Author niutongtong
 * @Date 2019-06-02 19:04
 * @Version V1.0
 **/
public class ConcreteProduct implements  Product{
  @Override
  public void getName() {
    System.out.println("ConcreteProduct");
  }
}

package com.java.ntt.designPatterns.SimpleFactory;

/**
 * @ClassName ConcreteProduct1
 * @Description
 * @Author niutongtong
 * @Date 2019-06-02 19:06
 * @Version V1.0
 **/
public class ConcreteProduct1 implements Product {
  @Override
  public void getName() {
    System.out.println("ConcreteProduct1");
  }
}

package com.java.ntt.designPatterns.SimpleFactory;

/**
 * @ClassName ConcreteProduct2
 * @Description
 * @Author niutongtong
 * @Date 2019-06-02 19:07
 * @Version V1.0
 **/
public class ConcreteProduct2 implements Product{
  @Override
  public void getName() {
    System.out.println("ConcreteProduct2");
  }
}

package com.java.ntt.designPatterns.SimpleFactory;

/**
 * @ClassName SimpleFactory
 * @Description
 *在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。
 * 简单工厂把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个具体子类来实例化。
 * @Author niutongtong
 * @Date 2019-06-02 19:08
 * @Version V1.0
 **/
public class SimpleFactory {

  public Product createProduct(int type) {
    Product product;
    switch (type) {
      case 1:
        product = new ConcreteProduct1();
        break;
      case 2:
        product = new ConcreteProduct2();
        break;
      default:
        product = new ConcreteProduct();
        break;
    }
    return product;
  }

  public static void main(String[] args) {
    SimpleFactory simpleFactory = new SimpleFactory();
    Product product = simpleFactory.createProduct(1);
    // do something with the product
  }
}


image

学习参考: 传送门

上一篇 下一篇

猜你喜欢

热点阅读