zoukankan      html  css  js  c++  java
  • 大话设计模式(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 代码

  • 相关阅读:
    Python抓取妹子图,内含福利
    我是如何通过一部动漫学习英语的?
    SqlServer,Oracle,db2,MySql查询表索引
    cmd命令大全
    资源推荐:PPT快闪资源合集附配套字体下载
    安卓抖音全球地区版
    tomcat的Server.xml详解和Host的配置
    Java总结篇系列:Java多线程(三)
    Java总结篇系列:Java多线程(二)
    Java总结篇系列:Java多线程(一)
  • 原文地址:https://www.cnblogs.com/6bing/p/5375626.html
Copyright © 2011-2022 走看看