工厂设计模式

2017-09-28  本文已影响0人  Ayres

一、简单工厂设计模式

Paste_Image.png

创建对象不是直接创建,而是通过Factory创建,只需传入对应大参数就行。比如 BitmapFactory类
,我们不需要关心具体的实现,符合最少知识原则。

二、工厂方法模式

一句话就是:把对象的实现延迟到子类完成。

Paste_Image.png

我们产品接口

   public interface ProductApi {
public void product(String data);   
  } 

生产各种产品
ProductA

  public class ProductA implements ProductApi {
  @Override
  public void product(String data) {
    System.out.println("生产产品A...");
  }
      }

ProductB

  public class ProductB implements ProductApi {
  @Override
  public void product(String data) {
    System.out.println("生产产品B...");
  } }

ProductC

  public class ProductC implements ProductApi {
  @Override
  public void product(String data) {
    System.out.println("生产产品C...");
  } }

当我们创建产品时
ProductAFactory

  public class ProductAFactory  {
  @Override
  public void creat(String data) {
        ProductA product=    new  ProductA();
                   product.product(data);
     }
      }

ProductBFactory

  public class ProductBFactory  {
  @Override
  public void creat(String data) {
        ProductB product=    new  ProductB();
                   product.product(data);
     }
      }

ProductCFactory

  public class ProductCFactory  {
  @Override
  public void creat(String data) {
        ProductC product=    new  ProductC();
                   product.product(data);
     }
      }

使用工厂方法模式抽取,只有创建对象不同,调用方法都相同,所以可以这样

   public abstract class ProductFactory  {
public abstract Product newProduct();
public void export(String data){
    Product product= newProduct();
    product.product(data);
}   
  }

ProductAFactory变成了

public class ProductAFactory  extends ProductFactory    {
  @Override
  public Product newProduct() {
     return new ProductA();
     }
      }

三、抽象工厂模式

 1. 工厂方法模式的定义是:定义一个用于创建对象的接口,让子类决定实例化哪个类。
  2.抽象工厂模式的定义:创建一组相关或者相互依赖的对象提供一个接口,而不需要指定他们具体的类。
image.png
image.png
上一篇 下一篇

猜你喜欢

热点阅读