Android设计模式——工厂方法模式

1.定义:工厂方法模式就是定义一个用于创建对象的接口,让子类决定实例化哪个类。

2.看代码:

   产品抽象类

public abstract class Product {
    /**
     * 产品类抽象方法
     */
    public abstract void method();

}

具体产品A

public class ProductA  extends Product{
    private static final String TAG = "ProductA";
    @Override
    public void method() {
        Log.i(TAG, "method: "+"产品A");
    }
}

具体产品B

public class ProductB extends Product {
    private static final String TAG = "ProductB";

    @Override
    public void method() {
        Log.i(TAG, "method: "+"产品B");
    }
}

抽象工厂类

/**
 * 抽象工厂
 */
public abstract class Factory {

    public abstract Product createProduct();
}

具体工厂类

public class ConcreteFactory extends Factory {
    @Override
    public Product createProduct() {
        return new ProductA();
    }
}

实现

        Factory factory=new ConcreteFactory();
            Product a=factory.createProduct();
            a.method();

其主要为:

<1>抽象工厂,为工厂模式的核心

<2>具体工厂,实现具体的逻辑功能

<3>抽象产品,是工厂模式创建的产品的父类

<4>具体产品,实现抽象产品的某个具体对象

以上的方法如果需要得到ProductB的实例,可以创建productB的实例工厂。也可以在工厂的方法中传入Class类决定是哪一个产品类。

抽象工厂类

/**
 * 抽象工厂
 * 具体生产什么产品有子类实现
 * @param  tClass 产品对象类型
 * 
 */

public abstract class Factory {

  public abstract <T extends Product> T CreateProduct(Class<T> tClass);

 }

具体的工厂类,通过反射获取类的实例

public class ConcreteFactory extends Factory {
    @Override
    public <T extends Product> T CreateProduct(Class<T> tClass) {
        Product product=null;
        try {
            product= (Product) Class.forName(tClass.getName()).newInstance();

        }catch (Exception e){

        }
        return (T)product;
    }
}

实现:

            Factory factory=new ConcreteFactory();
            Product product=factory.CreateProduct(ProductB.class);
            product.method();
今天多一点积累,明天少一分烦恼
原文地址:https://www.cnblogs.com/galibujianbusana/p/6413621.html