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();
        }
    }
    工厂方法模式代码
  • 相关阅读:
    centos 7 配置ip
    Linux下安装jmeter
    eclipse 高效快捷键大全
    eclipse中不能找到dubbo.xsd报错”cvc-complex-type.2.4.c“的 两种解决方法
    大型网站系统架构演化之路(转)
    程序员技术练级攻略
    JSP和servlet之间的传值(总结的很全面)
    正则表达式笔记
    cenos 安装nginx并添加到service
    mac os重装php
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/10942282.html
Copyright © 2011-2022 走看看