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

工厂方法模式

简介

  • 定义一个用于创建对象的接口,让子类决定实例化哪个类

使用场景

  • 在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式

实现

  • 实现工厂方法模式需要实现四个元素:抽象产品、具体产品、抽象工厂、具体工厂
// 抽象产品
public abstract class Product { 
    public abstract void method();
}
// 具体产品
public class ProductA extends Product {

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

    @Override
    public void method() {
        System.out.println("产品B");
    }
}
// 抽象工厂(可省)
public abstract class Factory {
    public abstract <T extends Product> T createProduct(Class<T> clz);
}
// 具体工厂
public class ConcreteFactory extends Factory {

    @Override
    public <T extends Product> T createProduct(Class<T> clz) {
        Product p = null;
        try {
            p = (Product) Class.forName(clz.getName()).newInstance();
        }catch (Exception e) {
            e.printStackTrace();
        }
        return (T) p;
    }
}
// 测试
public class Test {
    public static void main (String[] args) {
        ConcreteFactory factory = new ConcreteFactory();
        ProductA productA = factory.createProduct(ProductA.class);
        ProductB productB = factory.createProduct(ProductB.class);
        productA.method();
        productB.method();
    }
}

Android中的工厂方法模式

  • Activity中的各个生命周期方法就可以看作是工厂方法

总结

  • 工厂方法模式通过依赖抽象来达到解耦的效果,并且将实例化的任务交给子类去完成,有非常好的扩展性
  • 工厂方法模式用于生成比较复杂的对象。
  • 工厂方法模式的应用非常广泛,然而缺点也很明显,就是每次为工厂方法添加新的产品时,都需要编写一个新的产品类

猜你喜欢

转载自blog.51cto.com/14335942/2395056