• 设计模式之简单工厂


          设计模式既上一篇关于单例模式后,终于要接着写下去了,先来个最简单的,简单工厂模式,这个设计模式很简单,也是最常用的(是不是好多东西都这样,越简单,门槛越低,越讨人喜欢)。

    概念(原谅我无耻的抄百度百科):

          简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

         这里说的很清楚,一个工厂N多对象,这就是简单工厂的实质,具体的UML类图如下

         

    先安利下processon这个在线的工具,https://www.processon.com/i/5778719ce4b09f625a87f51b 这是我的邀请链接,当然你如果需要画很多图,请花钱支持他们。

    来解释下这个类图,三部分组成,一是Creator,是工厂类,二是IProduct接口,三是具体的产品A和B。

    具体的代码如下

    产品接口:

    public interface IProduct {
        void meathod();
    }

    具体产品:

    public class ProductA implements IProduct {
        public void meathod() {
            System.out.printf("产品A");
        }
    }
    public class ProductB implements IProduct {
    
        public void meathod() {
            System.out.printf("产品B");
        }
    }

    工厂:

    public class Creator {
        public static IProduct createProduct(String productName) {
    
            if (null == productName) {
                return null;
            } else if ("A".equals(productName)) {
                return new ProductA();
            } else if ("B".equals(productName)) {
                return new ProductB();
            }
            return null;
        }
    
        public static void main(String[] args) {
            IProduct productA = Creator.createProduct("A");
            productA.meathod();
    
            IProduct productB = Creator.createProduct("B");
            productB.meathod();
        }
    }

    输出: 产品A产品B

    具体实例:

    这样简单的模式是比较常用的,拿我们的项目来说,我们做的产品采用多个合作方的各种接口,其中大部分接口都是相同的只是再具体的字段和细节不一样而已,例如去申请授信都是一些个人隐私信息,各家要的大体相同,只是个别的信息不同而已,这样就很适合工厂模式。

    优缺点:

    优点:解耦,帮助封装。

    缺点:增加客户端复杂度,不利于扩展子工厂

    其实简单工厂模式的本质就是选择实现。

    这个简单的就说这么多吧。

    参考文献:龙哥的设计模式系列 比我写的强很多 这个是龙哥博客地址 http://www.zuoxiaolong.com/

                  《研磨设计模式》 这是一本用Java实现和讲解的设计模式。

      

  • 相关阅读:
    linux_crontab_定时删除
    bigdata_zookeeper 可视化界面zkui
    bigdata_ Kafka集群模式部署
    大数据_zookeeper环境搭建中的几个坑
    实战-130W表增加字段耗时
    每天一个linux命令
    nginx重启报找不到nginx.pid的解决方法
    log4j配置
    mysql select 1
    查看mysql语句运行时间
  • 原文地址:https://www.cnblogs.com/daily-note/p/6970400.html
Copyright © 2020-2023  润新知