zoukankan      html  css  js  c++  java
  • 建造者模式

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

     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

    欢迎亲们评论指教。

  • 相关阅读:
    [Redux] Extracting Container Components (FilterLink)
    [Regular Expressions] Introduction
    [Javascript] Web APIs: Persisting browser data with window.localStorage
    [Javascript] The JSON.stringify API
    [Redux] Extracting Presentational Components -- TodoApp
    [Redux] Extracting Presentational Components -- Todo, TodoList
    [Redux] Extracting Presentational Components -- Footer, FilterLink
    [Redux] Extracting Presentational Components -- AddTodo
    [Javascript] Task queue & Event loop.
    吸尘器:吸尘器
  • 原文地址:https://www.cnblogs.com/xiluhua/p/4413723.html
Copyright © 2011-2022 走看看