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

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

工厂方法模式结构图:
工厂方法模式结构图.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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容