zoukankan      html  css  js  c++  java
  • 工厂方法模式

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

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

    代码实现:

    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();
        }
    }
    工厂方法模式代码
  • 相关阅读:
    Laravel 初始化
    ant design pro 左上角 logo 修改
    请求到服务端后是怎么处理的
    Websocket 知识点
    王道数据结构 (7) KMP 算法
    王道数据结构 (6) 简单的模式匹配算法
    王道数据结构 (4) 单链表 删除节点
    王道数据结构 (3) 单链表 插入节点
    王道数据结构 (2) 单链表 尾插法
    王道数据结构 (1) 单链表 头插法
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/10942282.html
Copyright © 2011-2022 走看看