• 大话设计模式(1)简单工厂模式


    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。

    简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。

    简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

    请看UML图:
    简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
     
    该模式中包含的角色及其职责
     
    工厂(Creator)角色
    简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
     
    抽象产品(Product)角色
    简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
     
    具体产品(Concrete Product)角色
    是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。
     
    详细代码:
     
    工厂类
    /**
     * 
     * @author zyh
     * 
     */
    public class Test {
        public static void main(String[] args) {
            Product product = ProductFactory.createProduct(ProductType.PRODUCTA);
            String productA = product.createRealProduct();
            System.out.println(productA);
    
            product = ProductFactory.createProduct(ProductType.PRODUCTB);
            String productB = product.createRealProduct();
            System.out.println(productB);
        }
    }

    抽象产品类

    public class Product {
        /**
         * 创建产品
         * 
         * @return
         */
        public String createRealProduct() {
            String product = "";
            return product;
        }
    }

    具体产品类

    /**
     * 产品A
     * 
     * @author zyh
     * 
     */
    public class ProductA extends Product {
    
        @Override
        public String createRealProduct() {
            String productA = "产品A";
            return productA;
        }
    
    }
    /**
     * 产品B
     * 
     * @author zyh
     * 
     */
    public class ProductB extends Product {
    
        @Override
        public String createRealProduct() {
            String productB = "产品B";
            return productB;
        }
    
    }

    其他:产品的类型

    /**
     * 产品A,产品B的类型
     * 
     * @author zyh
     * 
     */
    public enum ProductType {
        PRODUCTA, PRODUCTB
    }

    最后来个测试类,测试ok

    /**
     * 
     * @author zyh
     * 
     */
    public class Test {
        public static void main(String[] args) {
            Product product = ProductFactory.createProduct(ProductType.PRODUCTA);
            String productA = product.createRealProduct();
            System.out.println(productA);
    
            product = ProductFactory.createProduct(ProductType.PRODUCTB);
            String productB = product.createRealProduct();
            System.out.println(productB);
        }
    }

    输出:

    产品A
    产品B
    

     

    资料来源:

    [1] 百度-简单工厂模式

    [2] 豆瓣-大话设计模式

    [3] clarcks的 github 代码

  • 相关阅读:
    Django REST framework的解析器与渲染器
    python基础之 数据格式化
    REST framework 之 分页
    Django REST framework 之 认证 权限 限制
    DjangoRestFrameWork 版本控制
    DjangoRESTFrameWork中的视图
    浏览器跨域问题
    初识REST
    vue之生命周期
    vue组件
  • 原文地址:https://www.cnblogs.com/6bing/p/5375626.html
Copyright © 2020-2023  润新知