美文网首页Android设计模式Android技术知识Android开发经验谈
Android设计模式之(5)----抽象工厂模式

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

作者: Ch3r1sh | 来源:发表于2017-08-17 09:51 被阅读34次

    抽象工厂模式

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

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

    例:一个公司有多个程序猿,有多个产品经理,那么程序猿下面分为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代码地址

    相关文章

      网友评论

        本文标题:Android设计模式之(5)----抽象工厂模式

        本文链接:https://www.haomeiwen.com/subject/yudgrxtx.html