• java 之 工厂模式(大话设计模式)


    在以前的文章里面讲述过简单工厂模式,见链接:http://www.cnblogs.com/zhuxiansheng/p/7873161.html

    简单工厂模式解耦了客户端和实现的依赖,不过如果有再次扩展实现的话,我们不得不去修改工厂当中的选择分支,来添加case,然后添加新的实现,这违背了开放-关闭原则。如何解决这个问题,工厂模式给了很好的解答。

    大话设计模式-类图

    大话设计模式中的例子代码如下:

    /**
     *  工厂接口
     */
    public interface IFactory {
    
        public LeiFeng createLeiFeng();
    }
    /**
     * 父类
     */
    public class LeiFeng {
    
        public void sweep() {
            System.out.println("扫地");
        }
    
        public void buyRice() {
            System.out.println("买米");
        }
    
        public void wash() {
            System.out.println("洗碗");
        }
    }
    /**
     * 子类
     */
    public class Undergraduate extends LeiFeng{
    
    }
    /**
     * 子类
     */
    public class Volunteer extends LeiFeng{
    
    }
    /**
     * 志愿者工厂
     */
    public class UndergraduteFactory implements IFactory{
    
        @Override
        public LeiFeng createLeiFeng() {
            return new Undergraduate();
        }
    
    }
    /**
     * 大学生工厂
     */
    public class VolunteerFactory implements IFactory{
    
        @Override
        public LeiFeng createLeiFeng() {
            return new Volunteer();
        }
    }
    /**
     * 客户端
     */
    public class Test {
    
        public static void main(String[] args) {
            IFactory volunteerFactory = new VolunteerFactory();
            LeiFeng leiFeng = volunteerFactory.createLeiFeng();
            leiFeng.sweep();
            leiFeng.buyRice();
            leiFeng.wash();
        }
    }

    如果在添加别的角色,我们只需要添加对应的工厂和角色domain就可以实现在不修改原代码同时添加新的实现,针对工厂符合了开放-关闭原则,不过针对客户端我们还是要修改创建哪个具体工厂的代码。

    回想一下简单工厂模式,如果我们在扩展M的N次方时,我们只需要实现计算工厂接口,然后在添加具体的计算类,就实现了实现的扩展,这是笔者对简单工厂和工厂模式的理解,希望能帮助学习工厂模式的童鞋!

  • 相关阅读:
    myeclipse中jpa的安装以及jpa reverse engining
    myeclipse显示db-brower
    jpa报错 Unable to acquire a connection from driver [null], user [null] and URL [null]
    sqlserver安装和踩坑经历
    idea注释模板
    可选链与空值合并
    Nokia5130不能上网
    血小板 live2d web使用
    什么值得买前端面试题 2019秋季
    便利蜂前端面试题 2019秋季
  • 原文地址:https://www.cnblogs.com/zhuxiansheng/p/7904395.html
Copyright © 2020-2023  润新知