zoukankan      html  css  js  c++  java
  • java 之 建造者模式(大话设计模式)

    建造者模式,在笔者看来比较试用于,定制一个业务流程,而流程的细节又不尽相同,每个细节又必不可少,这时应考虑使用建造者模式。

    大话设计模式-类图

    先看下笔者写的一个简单的例子。

    /**
     *  所有建造过程不同的方法均定义在接口里
     */
    public interface IMakePerson {
    
        public void makeHead();
    
        public void makeBody();
    
        public void makeHandle();
    
        public void makeLeg();
    
        public Person getResult();
    }
    /**
     * 产品
     */
    public class Person {
    
        List<String> personParts = new ArrayList<>();
    
        public void add(String part) {
    
            personParts.add(part);
        }
    
        public void show() {
    
            for (String part : personParts) {
                System.out.print(part);
            }
        }
    }
    /**
     *  指挥官,指挥具体创建小人的过程
     */
    public class Director {
    
        public Person createPerson(IMakePerson makePerson) {
            makePerson.makeHead();
            makePerson.makeBody();
            makePerson.makeHandle();
            makePerson.makeLeg();
            return makePerson.getResult();
        }
    }
    /**
     *  实现创建小人接口的具体创建小人类
     */
    public class FatPerson implements IMakePerson{
    
        private Person person = new Person();
    
        @Override
        public void makeHead() {
            person.add("头    ");
        }
    
        @Override
        public void makeBody() {
            person.add("胖身体    ");
        }
    
        @Override
        public void makeHandle() {
            person.add("手    ");
        }
    
        @Override
        public void makeLeg() {
            person.add("腿    ");
        }
    
        @Override
        public Person getResult() {
            return person;
        }
    }
    /**
     *  实现创建小人接口的具体创建小人类
     */
    public class ThinPerson implements IMakePerson{
    
        private Person person = new Person();
    
        @Override
        public void makeHead() {
            person.add("头    ");
        }
    
        @Override
        public void makeBody() {
            person.add("瘦身体    ");
        }
    
        @Override
        public void makeHandle() {
            person.add("手    ");
        }
    
        @Override
        public void makeLeg() {
            person.add("腿    ");
        }
    
        @Override
        public Person getResult() {
            return person;
        }
    }
    /**
     * 客户端
     */
    public class Test {
    
        public static void main(String[] args) {
            IMakePerson thinPerson = new ThinPerson();
            Director director = new Director();
            Person thinperson = director.createPerson(thinPerson);
            thinperson.show();
    
            System.out.println("
    ---------------------------------------------");
    
            IMakePerson FatPerson = new FatPerson();
            Person fatperson = director.createPerson(FatPerson);
            fatperson.show();
        }
    }

    运行结果如下:

    头    瘦身体    手    腿    
    ---------------------------------------------
    头    胖身体    手    腿    

    可以看出如果我们继续创建不同的小人,我们只需要在写一个小人类实现接口就可以了,这样我们可以稳定的创建小人,而不会造出残疾人。

    实际工作中,很多流程都不尽相同,只是细节有区别,此时我们应采用建造者模式,来为不同的客户创建不同的稳定流程。

    以上是笔者对建造者的理解,希望能帮助学习的小伙伴!

  • 相关阅读:
    JavaScript:Number 对象
    JavaScript:Math 对象
    杂项:引用资源列表
    小团队管理与大团队管理
    技术转管理
    【翻译+整理】.NET Core的介绍
    自己开发给自己用的个人知识管理工具【脑细胞】,源码提供
    关于【自证清白】
    这篇博客能让你戒烟——用程序员的思维来戒烟!
    如果我是博客园的产品经理【下】
  • 原文地址:https://www.cnblogs.com/zhuxiansheng/p/7977128.html
Copyright © 2011-2022 走看看