zoukankan      html  css  js  c++  java
  • 模式对象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
    模式和对象
    ---------------------------------

  • 相关阅读:
    facebook's HipHop for PHP: Move Fast
    使用Linux(CentOS)搭建SVN服务器全攻略
    PHP内置的预定义常量大全
    用PHP纯手工打造会动的多帧GIF图片验证码
    PHP的unset究竟会不会释放内存?
    请远离include_once和require_once
    真希望能夠統一一下接口
    Linux下同步网络时间
    mongo 报connect@src/mongo/shell/mongo.js:251:13错误的解决方式
    spring Aop实现防止重复提交
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3109231.html
Copyright © 2011-2022 走看看