Android 设计模式之简单工厂模式

作者: AntDream | 来源:发表于2018-07-27 17:00 被阅读22次

    设计模式系列文章

    简单工厂模式又被称作静态工厂方法模式,属于创建型设计模式,但并不属于23种GoF设计模式之一

    定义

    简单工厂模式属于创建型设计模式,又被称作静态工厂方法模式,这是由一个工厂对象决定创建出哪一种产品类的实例

    使用场景

    • 工厂类负责创建的对象比较少
    • 客户只需要知道传入工厂类的参数,而无需关心创建对象的逻辑

    实现

    一般分3大模块

    • 产品抽象类:负责描述所有产品实例的公共接口
    • 具体产品
    • 工厂类:简单工厂模式的核心,负责实现创建所有实例的内部逻辑

    实现的要点

    • 产品抽象类是所有产品实例的父类,要提取出所有产品实例的公共接口
    • 工厂类需要对外提供一个创建产品实例的接口

    实现方式

    • 抽象产品类
    public abstract class Product {
    
        /**
         * 产品类的抽象方法,由具体的产品类去实现
         */
        public abstract void method();
    }
    
    • 具体产品类
    //产品A
    public class ProductA extends Product {
    
        @Override
        public void method() {
            System.out.println("产品A");
        }
    }
    
    //产品B
    public class ProductB extends Product {
    
        @Override
        public void method() {
            System.out.println("产品B");
        }
    }
    
    
    • 具体工厂
    public class ConcreteFactory  {
    
        public static Product createProduct(String type) {
            Product product = null;
            switch (type) {
                case "A":
                    product = new ProductA();
                    break;
                case "B":
                    product = new ProductB();
                    break;
            }
            return product;
        }
    }
    
    • 调用
    ConcreteFactory.createProduct("A").menthod();
    

    总结

    • 简单工厂方法比较简单。它使用户根据参数获得对应的实例,避免直接实例化类,降低了耦合性。
    • 可实例化的类型在编译期间已经被确定。如果增加新类型,则需要修改工厂类,这样的化就违背了开闭原则。
    • 简单工厂需要知道所有要生成的类型,当子类过多或者子类层次过多时不适合使用。而工厂方法模式就没有这个问题
    • 可以对照着工厂方法模式来理解对比下:Android 设计模式之工厂方法模式

    今天你进步了嘛?欢迎关注我的微信公众号,和我一起每天进步一点点!


    AntDream

    相关文章

      网友评论

        本文标题:Android 设计模式之简单工厂模式

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