Android设计模式之(5)----抽象工厂模式

抽象工厂模式

一个抽象的接口可以实现多个产品

一个抽象工厂可以实现多个具体工厂

例:一个公司有多个程序猿,有多个产品经理,那么程序猿下面分为Android,iOS,PHP等程序猿,产品经理也分为多个类型。在之前的工厂模式中已经建立了程序猿,这个时候在造一个产品,这个产品其实就是产品经理的角色。

1.建立产品经理的接口

public interface ProductManager {
    public  void showProductManager();//展示是什么类型的产品经理

}

2.实现具体的产品经理

public class AndroidProductManager implements  ProductManager {
    @Override
    public void showProductManager() {
        System.out.println("我是Android产品经理");
    }
}

3.建立程序猿种类的接口

public interface CodeMonkey {
    public  void showCodeMonkeyType();//展示是什么类型的程序猿
}

4.实现具体的程序猿

public class AndroidMonkeyFactory extends Factory {

    @Override
    public CodeMonkey showCodeMonkeyType() {
        return new AndroidCodeMonkey();
    }
}

5.建立抽象的工厂来生成产品经理和程序猿

public abstract  class AbstractFactory {
    public abstract <T extends CodeMonkey>T showCodeMonkeyType(Class<T> clazz) throws Exception;
    public abstract <T extends ProductManager>T showProductManager(Class<T> clazz) throws Exception;
}

6.实现具体的工厂管理产品种类的生成

public class AbstractProductManagerFactory extends AbstractFactory {
    @Override
    public <T extends CodeMonkey> T showCodeMonkeyType(Class<T> clazz) throws Exception {
        CodeMonkey codeMonkey= (CodeMonkey) clazz.forName(clazz.getName()).newInstance();
        return (T) codeMonkey;
    }

    @Override
    public <T extends ProductManager> T showProductManager(Class<T> clazz) throws Exception {
        ProductManager productManager= (ProductManager) clazz.forName(clazz.getName()).newInstance();
        return (T) productManager;
    }
}

优点:外部只需要关注产品种类,只关注与抽象接口。当业务需求,两个产品有一定的交集依赖关系社即可使用抽象模式解决。

缺点:如果新增一个产品种类,需要修改抽象工厂和工厂的实现代码,违背了开闭原则,不利于维护

github代码地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,923评论 25 709
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,390评论 1 15
  • 设计原则: 要依赖抽象,不要依赖具体类 目录 本文的结构如下: 什么是抽象工厂模式 为什么要用该模式 模式的结构 ...
    w1992wishes阅读 4,806评论 0 6
  • 宝贝现在虽然不会说话,但是能听懂大部分我说的话,宝贝长大了,可爱*^o^**^o^*可爱着呢! 今天下午给宝贝包的...
    小丸子_1284阅读 1,355评论 0 0
  • 小时候,稚嫩的小手紧紧攥住秋千的纤绳,双腿颤颤发抖,好一会儿才鼓起勇气站起来。站的高了,看的也远了,蓦地发现那...
    三言沐心阅读 2,555评论 0 0

友情链接更多精彩内容