• 模式对象GoF23种设计模式之创建型模式之建造者模式


    工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下模式对象

        一、概述

            将一个复杂对象的构建与其表示分离开来,使得同样的构建进程可以创立不同的表示。

        二、适用性

        1.当创立复杂对象的算法应当独立于该对象的构成部分以及它们的装配方式的时候。

        2.当结构进程必须答应被结构的对象有不同的表示的时候。

        三、参与者

        1.Builder:为创立一个Product对象的各个部件指定抽象接口。

        2.ConcreteBuilder:实现Builder接口以结构和装配该产品的各个部件。

        3.Director:结构一个使用Builder接口的对象。

        4.Product:表示被结构的复杂对象。ConcreteBuilder创立该产品的外部表示并定义它的装配进程。包括定义构成部件的类,以及将这些部件装配成终究产品的接口。

        四、类图

        模式和对象

        五、示例

        Builder

    package cn.lynn.builder;
    
    public interface IPersonBuilder {
    
        public void buildHead();
        public void buildBody();
        public void buildFoot();
        public Person buildPerson();
    
    }

        ConcreteBuilder

    package cn.lynn.builder;
    
    public class ManBuilder implements IPersonBuilder {
    
        private Person person;
    
        public ManBuilder() {
            person = new Man();
        }
    
        @Override
        public void buildHead() {
            person.setHead("制作男人的头");
        }
    
        @Override
        public void buildBody() {
            person.setBody("制作男人的身体");
        }
    
        @Override
        public void buildFoot() {
            person.setFoot("制作男人的脚");
        }
    
        @Override
        public Person buildPerson() {
            return person;
        }
    
    }

        Director

        每日一道理
    心是一棵树,爱与希望的根须扎在土里,智慧与情感的枝叶招展在蓝天下。无论是岁月的风雨扑面而来,还是滚滚尘埃遮蔽了翠叶青枝,它总是静默地矗立在那里等待,并接受一切来临,既不倨傲,也不卑微。
      心是一棵树,一个个故事被年轮携载;一回回驿动与飞鸟相约;一次次碰撞使它绵密柔韧;一幕幕经历造就了它博广的胸怀。心是一棵树,独木不成林。因此,树与树既独立又相联,心与心既相异又相亲。
    package cn.lynn.builder;
    
    public class PersonDirector {
    
        public Person constructPerson(IPersonBuilder builder) {
            builder.buildHead();
            builder.buildBody();
            builder.buildFoot();
            return builder.buildPerson();
        }
    
    }

        Product

    package cn.lynn.builder;
    
    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;
        }
    
    }
    package cn.lynn.builder;
    
    public class Man extends Person {
    
    }

        Test

    package cn.lynn.builder;
    
    public class Test {
    
        public static void main(String[] args) {
            PersonDirector director = new PersonDirector();
            Person person = director.constructPerson(new ManBuilder());
            System.out.println(person.getHead());
            System.out.println(person.getBody());
            System.out.println(person.getFoot());
        }
    
    }

        Result

    制作男人的头
    制作男人的身体
    制作男人的脚

    文章结束给大家分享下程序员的一些笑话语录: 手机终究会变成PC,所以ip会比wm更加畅销,但是有一天手机强大到一定程度了就会发现只有wm的支持才能完美享受。就好比树和草,草长得再高也是草,时间到了条件成熟了树就会窜天高了。www.ishuo.cn

    --------------------------------- 原创文章 By
    模式和对象
    ---------------------------------

  • 相关阅读:
    <script>标签的加载解析执行
    百度地图API位置偏移的校准算法
    开源实时消息推送系统 MPush
    开源GIS软件 4
    Bootstrap 只读输入框
    javascript中的后退和刷新
    HTML中的文本框textarea标签
    Spring Boot 特性 —— SpringApplication
    SpringMVC使用POST方法传递数据,却出现Request method 'GET' not supported?
    springboot的登录拦截机制
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3109231.html
Copyright © 2020-2023  润新知