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();
        }
    }

    运行结果如下:

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

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

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

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

  • 相关阅读:
    Flask 5 模板1
    Flask 4 拓展
    Python学习札记(二十四) 函数式编程5 返回函数
    Python学习札记(二十三) 函数式编程4 sorted
    Docker:Err http://archive.ubuntu.com trusty InRelease & E: Unable to locate package [name] 问题
    解决 docker: Error response from daemon: ... : net/http: TLS handshake timeout.
    Ubuntu 安装Docker
    Flask 3 程序的基本结构2
    Flask 2 程序的基本结构1
    Flask 1 Introductory Chapter
  • 原文地址:https://www.cnblogs.com/zhuxiansheng/p/7977128.html
Copyright © 2011-2022 走看看