工厂模式

优点:减低了代码的耦合度,良好的封装性,代码结构清晰。扩展性好。

缺点:添加新的产品时就要编写一个新的产品类,同时还要引入抽象层,增加代码量结构复杂化。

1、创建产品类

public abstract class Product {
/**
 * 产品类的抽象方法
 * 由具体的产品类去实现
 * */
public abstract void method();
}

2、创建具体产品类

public class ConcreteProductA extends Product {
  @Override
  public void method() {
    System.out.println("产品A");
  }
}
public class ConcreteProductB extends Product {
  @Override
  public void method() {
    System.out.println("产品B");
  }
}

3、具体实现工厂

public class ConcreteFactoryA extends Factory {
  /**
   * 具体工厂类
   * */
  @Override
  public Product createProduct() {
    return new ConcreteProductA();
  }
}

public class ConcreteFactoryB extends Factory {
  /**
   * 具体工厂类
   * */
  @Override
  public Product createProduct() {
    return new ConcreteProductB();
  }
}

4、创建需要的产品

    Factory factoryA = new ConcreteFactoryA();
    Product productB = factoryA .createProduct();
    productB .method();
    Factory factoryB = new ConcreteFactoryB();
    Product productB = factoryB .createProduct();
    productB .method();

你可能感兴趣的:(工厂模式)