安卓设计模式-简单工厂模式

安卓设计模式-简单工厂模式

是什么

简单工厂模式又称为静态方法模式(因为工厂类中定义了一个静态方法),简单工厂模式可以理解为负责生产对象的一个类,称为工厂类。

有什么

  • 抽象产品类
  • 具体产品类(A产品、B产品)
  • 具体工厂类

怎么做

  1. 定义一个抽象产品类
public abstract class Product(){
    public abstract void show();
}
  1. 定义具体产品类继承Product
public class AProduct extends Product{
    public void  show(){
        System.out.print("我是产品A");
    }
}
public class BProduct extends Product{
    public void  show(){
        System.out.print("我是产品B");
    }
}
  1. 创建工厂类创建具体的产品
public class Factory{
    public  static Product create(String productName){
        Product p=null;
        swich(productName){
            case "A"
            p=new AProduct();
            break;
            case "B"
            p=new BProduct();
            break;
        }
        return p;
    }
}
  1. 演示
public void test() {
        Factory.create("A").show();//生产ProductA
        Factory.create("B").show();//生产ProductB
        try {
            Factory.create("C").show();//生产ProductC
        } catch (NullPointerException e) {
            System.out.println("没有ProductC");//没有ProductC,会报错
        }
    }

什么时候用

  1. 生成复杂对象是确定只有一个工厂类可以使用简单工厂类

优缺点

优点:
(1)代码解耦,创建实例的工作和使用实例的工作分开,使用者不必关系对象如何创建

缺点:
(1)违背开放封闭原则,若需要添加新产品则必须修改工厂类

简单工厂类优化

简单工厂类新增产品时需要直接修改工厂类违反了开发封闭原则,因此可以通过反射来创建实例对像,确保能够遵循开放封闭原则

public class Factory{
    public static  create(Class cls){
        Product p=null;
        p=(Product)Class.forName(cls.getClassName).newInstance();
        return (Product)p;
    }
}

你可能感兴趣的:(安卓设计模式-简单工厂模式)