• 建造者模式


    设计模式的意义在于:面向业务内容、业务数据结构和系统架构,高内聚低耦合、优雅的将平面逻辑立体化。

     1 package designPattern;
     2 /**
     3  * 建造者模式
     4  * @author Administrator
     5  */
     6 public class A7_BuilderTest {
     7 
     8     /**
     9      * 将一个复杂对象的构建与他的表示分离,使的同样的构建过程可以创建不同的表示
    10      * 适用于:
    11      * 1,创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式,
    12      * 2,构造过程必须允许被构造的对象有不同的表示
    13      */
    14     public static void main(String[] args) {
    15         PersonDirector pd = new PersonDirector();
    16         PersonBuilder person = pd.constructPerson(new ManBuilder());
    17         System.out.println(person.getBody());
    18         System.out.println(person.getFoot());
    19         System.out.println(person.getHead());
    20     }
    21 }
    22 //1,AbstractFactory 为创建一个Product对象的各个部件指定抽象接口
    23 interface PersonBuilderService
    24 {
    25     void buildHead();
    26     void buildBody();
    27     void buildFoot();
    28     PersonBuilder buildPerson();
    29 }
    30 //2,ConcreteFactory 实现Builder的接口以构造和装配该产品的各个部件
    31 class ManBuilder implements PersonBuilderService
    32 {
    33     PersonBuilder person;
    34     public ManBuilder()
    35     {
    36         person=new Man();
    37     }
    38     public void buildHead()
    39     {
    40         person.setHead("head");
    41     }
    42     public void buildBody()
    43     {
    44         person.setBody("body");
    45     }
    46     public void buildFoot()
    47     {
    48         person.setFoot("foot");
    49     }
    50     public PersonBuilder buildPerson() {
    51         return person;
    52     }
    53 }
    54 //3,Designer 构造一个使用Builder的对象
    55 class PersonDirector
    56 {
    57     PersonBuilder constructPerson(PersonBuilderService pb)
    58     {
    59         pb.buildBody();
    60         pb.buildFoot();
    61         pb.buildHead();
    62         return pb.buildPerson();
    63     }
    64 }
    65 
    66 class PersonBuilder
    67 {
    68     String head;
    69     String body;
    70     String foot;
    71     public String getHead() {
    72         return head;
    73     }
    74     public void setHead(String head) {
    75         this.head = head;
    76     }
    77     public String getBody() {
    78         return body;
    79     }
    80     public void setBody(String body) {
    81         this.body = body;
    82     }
    83     public String getFoot() {
    84         return foot;
    85     }
    86     public void setFoot(String foot) {
    87         this.foot = foot;
    88     }    
    89 }
    90 
    91 class Man extends PersonBuilder
    92 {
    93     
    94 }

    环境:JDK1.6,MAVEN,tomcat,eclipse

    源码地址:http://files.cnblogs.com/files/xiluhua/designPattern.rar

    欢迎亲们评论指教。

  • 相关阅读:
    kafka producer batch expired TimeoutException: KAFKA-5621、KIP-91(Provide Intuitive User Timeouts in The Producer)、KAFKA-5886
    Kafka Producer NetworkException and Timeout Exceptions
    How LinkedIn customizes Apache Kafka for 7 trillion messages per day
    elasticsearch es java api Using Bulk Processor
    ranger kafka
    kafka clients大全:支持语言集合(java/go/python/c++……)
    Apache NiFi之Kafka流数据到HBase
    Apache NiFi之MySQL数据同步到HBase
    Apache NiFi之MySQL数据同步到本地文件系统
    如何在 Flink 1.9 中使用 Hive?
  • 原文地址:https://www.cnblogs.com/xiluhua/p/4413723.html
Copyright © 2020-2023  润新知