• 工厂方法模式


    简单工厂模式有一个问题,就是只能通过工厂代码构造特定的类型的对象。如果对象添加一个种类,那么必须修改工厂的代码。这样违背了开闭原则,因此我们讲解工厂方法模式

    工厂方法模式是将工厂抽取出一个父类来,里面有一个创造对象的方法,每造一种对象写一个对应的子类工厂。这样新增子类对象就不会修改原来的代码了。

    代码实现:

    package com.zhen.build_template.factory_method;
    
    /**
     * @author zhen
     * @Date 2019/5/28 11:13
     */
    public interface Sender {
        public void send();
    }
    
    package com.zhen.build_template.factory_method;
    
    /**
     * @author zhen
     * @Date 2019/5/28 11:13
     */
    public class MailSender implements Sender {
        @Override
        public void send() {
            System.out.println("this is mailSender");
        }
    }
    
    package com.zhen.build_template.factory_method;
    
    /**
     * @author zhen
     * @Date 2019/5/28 11:14
     */
    public class SmsSender implements Sender {
        @Override
        public void send() {
            System.out.println("this is SmsSender");
        }
    }
    
    package com.zhen.build_template.factory_method;
    
    /**
     * @author zhen
     * @Date 2019/5/28 11:32
     */
    public interface SendFactory {
        Sender getSenderInstance();
    }
    
    package com.zhen.build_template.factory_method;
    
    /**
     * @author zhen
     * @Date 2019/5/28 11:33
     */
    public class SendMailFactory implements SendFactory {
        @Override
        public Sender getSenderInstance() {
            return new MailSender();
        }
    }
    
    package com.zhen.build_template.factory_method;
    
    /**
     * @author zhen
     * @Date 2019/5/28 11:36
     */
    public class SendSmsFactory implements SendFactory {
        @Override
        public Sender getSenderInstance() {
            return new SmsSender();
        }
    }
    工厂方法模式代码
  • 相关阅读:
    软工实践1816-第四次作业
    软工实践1816-第三次作业
    软工实践1816-第二次作业
    Alpha 冲刺 (3/10)
    Alpha 冲刺 (2/10)
    Alpha 冲刺 (1/10)
    福大软工 · 第七次作业
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
    福大软工1816 · 第六次作业
    福大软工1816 · 第五次作业
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/10942282.html
Copyright © 2020-2023  润新知