zoukankan      html  css  js  c++  java
  • java设计模式之抽象工厂模式学习

    工厂模式有个问题就是,类的创建依赖工厂。要想增加一个工厂类,就要修改原来的代码,这违背了闭包原则。所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。

    1.工厂类接口

    package com.qiao.abstractFactory;
    
    public interface Sender {
        public void send();
    }

     2.发短信

    package com.qiao.abstractFactory;
    
    public class SMSSender implements Sender{
    
        public void send() {
            System.out.println("sms sender ");
        }
    
    }

    3.发邮件

    package com.qiao.abstractFactory;
    
    public class MailSender implements Sender{
    
        public void send() {
            System.out.println("mail sender ");
        }
    
    }

    4.工厂类的提供者接口

    package com.qiao.abstractFactory;
    
    public interface Provider {
        public Sender produce();
    }

    5.短信类的生产工厂

    package com.qiao.abstractFactory;
    
    public class SMSProduceer implements Provider{
    
        public Sender produce() {
            return new SMSSender();
        }
    
    }

    6.邮件类的生产工厂

    package com.qiao.abstractFactory;
    
    public class MailProduceer implements Provider{
    
        public Sender produce() {
            return new MailSender();
        }
        
    }

    7.调用方法 -- 发短信

        @Test
        public void test1(){
            Sender send = new SMSProduceer().produce();
            send.send();
        }

    输出 : sms sender 

    总结:抽象工厂的好处在于,有新的功能添加时,不需要去改原来的方法,只需要增加两个类即可。这个也就造成了他的缺点,当子类过多时,类的个数也会成倍增加。

  • 相关阅读:
    Hadoop学习笔记(九)HDFS架构分析
    Hadoop学习笔记(九)HDFS架构分析
    Hadoop学习笔记(八)MapReduce深入分析
    Hadoop学习笔记(八)MapReduce深入分析
    Hadoop学习笔记(七)
    Hadoop学习笔记(七)
    Hadoop学习笔记(六)启动Shell分析
    Hadoop学习笔记(六)启动Shell分析
    「2018-11-05模拟赛」T5 传送机 解题报告
    NOIP 2018 普及组 解题报告
  • 原文地址:https://www.cnblogs.com/Iqiaoxun/p/5565224.html
Copyright © 2011-2022 走看看