• (设计模式)建造者模式


    建造者模式:通过建造,类似建房子一样,将复杂的建造工程,进行拆分成独立的方法个体,需要建立什么样子的对象就进行builder建造,最终建立成一个复杂对象。
    通过建造者模式,把复杂的过程进行拆分和封装。
     
    person 实体类
    /**
     * 人
     * 建造的基类
     * Created by 灰灰 on 2017/6/29.
     */
    public class Person {
        private String head;
        private String body;
        private String foot;
    
        public String getHead() {
            return head;
        }
    
        public void setHead(String head) {
            this.head = head;
        }
    
        public String getBody() {
            return body;
        }
    
        public void setBody(String body) {
            this.body = body;
        }
    
        public String getFoot() {
            return foot;
        }
    
        public void setFoot(String foot) {
            this.foot = foot;
        }
    }
    PersonBuilder 建造者接口,负责建造和返回建造的对象
    /**
     * 建造者模式
     */
    public interface PersonBuilder {
        /**
         * 建造的各个方法
         * 在里面执行复制的建造
        * @Author : 灰灰
        * @Date : 2017/6/29 17:15
        */
        void buildHead();
        void buildBody();
        void buildFoot();
        /**
         * 返回建造好的对象
        * @Author : 灰灰
        * @Date : 2017/6/29 17:15
        */
        Person buildPerson();
    }
    ManBuilder 实现
    /**
     * 建造男人
     * Created by 灰灰 on 2017/6/29.
     */
    public class ManBuilder implements PersonBuilder {
    
        public Person buildPerson() {
            return person;
        }
        @Override
        public void buildHead() {
            person.setHead("建造男人的头");
        }
    
        @Override
        public void buildBody() {
            person.setBody("建造男人的小肚腩");
        }
    
        @Override
        public void buildFoot() {
            person.setFoot("建造男人的大长腿");
        }
        public ManBuilder() {
            person = new Man();
        }
    
        Person person;
    }
    personDirector 要建造什么样的对象,建造的过程
    /**
     * Created by 灰灰 on 2017/6/29.
     */
    public class PersonDirector {
    
        public Person constructPerson(PersonBuilder personBuilder) {
            personBuilder.buildBody();
            personBuilder.buildFoot();
            personBuilder.buildHead();
            return personBuilder.buildPerson();
        }
    }
    测试
    public static void main (String[] args) {
        PersonDirector pd = new PersonDirector();
        Person person = pd.constructPerson(new ManBuilder());
        System.out.println(person.getBody());
        System.out.println(person.getFoot());
        System.out.println(person.getHead());
    }
  • 相关阅读:
    洛谷P2737 [USACO4.1]麦香牛块Beef McNuggets(DP,裴蜀定理)
    洛谷P4924 魔法少女小Scarlet
    洛谷P3912 素数个数
    洛谷P4016 负载平衡问题(费用流)
    洛谷P2736 [USACO3.4]“破锣摇滚”乐队 Raucous Rockers
    母函数(生成函数)
    洛谷P4086 [USACO17DEC]My Cow Ate My Homework S
    洛谷P5097 [USACO04OPEN]Cave Cows 2(ST表)
    洛谷P2713 罗马游戏(左偏树)
    洛谷P1260 工程规划
  • 原文地址:https://www.cnblogs.com/xiaohuihui96/p/7114999.html
Copyright © 2020-2023  润新知