android经常使用设计模式之工厂方法模式

定义:工厂方法模式属于建立型设计模式。定义一个用于建立对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。git

工厂方法模式结构图:

工厂方法模式结构图.jpg
在工厂方法模式中有以下角色:

  • Product: 抽象产品类
  • ConcreteProduct: 具体产品类,实现Product接口。
  • Factory: 抽象工厂类,该类返回一个Product类型的对象。
  • ConcreteFactory: 具体工厂类,返回ConcreteProduct实例。
demo&代码
public abstract class AbstractLivingDetection {
    /**
     * 开始检测
     */
    public abstract void startDetection();
}
复制代码
public class HaiXinLivingDetection extends AbstractLivingDetection {
    @Override
    public void startDetection() {
        System.out.println("开启海鑫活体检测");
    }
}
复制代码
public class TongFuDunLivingDetection extends AbstractLivingDetection {
    @Override
    public void startDetection() {
        System.out.println("开启通付盾活体检测");
    }
}
复制代码
public abstract class AbstractLivingDetectionFactory {
    public abstract <T extends AbstractLivingDetection> T createLivingDetection(Class<T> t);
}
复制代码
public class LivingDetectionFactory extends AbstractLivingDetectionFactory {

    @Override
    public <T extends AbstractLivingDetection>T createLivingDetection(Class<T> t){
        try {
            return  t.newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }
}
复制代码

#####使用场景github

  • 工厂类负责建立的对象比较少。
  • 客户只需知道传入工厂类的参数,而无须关心建立对象的逻辑。 优势:
优势
  • 使用户根据参数得到对应的类实例,避免了直接实例化类,下降了耦合性。
  • 工厂方法模式不但包含简单工厂的优势,并且没有违背开放封闭原则。

代码已上传github设计模式

相关文章
相关标签/搜索