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

    建造者模式:通过建造,类似建房子一样,将复杂的建造工程,进行拆分成独立的方法个体,需要建立什么样子的对象就进行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());
    }
  • 相关阅读:
    springboot拦截器的拦截配置和添加多个拦截器
    ASCII对照
    爬虫出现403错误解决办法
    PhantomJS在Selenium中被标记为过时的应对措施
    Selenium 之订制启动Chrome的选项(Options)
    Selenium+PhantomJS使用时报错原因及解决方案
    python爬虫之xpath的基本使用
    JSONObject类的引用必须jar包
    selenium之使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
    PhantomJS 与python的结合
  • 原文地址:https://www.cnblogs.com/xiaohuihui96/p/7114999.html
Copyright © 2011-2022 走看看