• 构造者模式(Builder)


    定义
      将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。
    实用范围
      1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
      2 当构造过程必须允许被构造的对象有不同表示时。
    角色
      在这样的设计模式中,有以下几个角色:
      1 builder:为创建一个产品对象的各个部件指定抽象接口。
      2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。
      3 Director:构造一个使用Builder接口的对象。
      4 Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
    例子
      Builder
      public interface PersonBuilder {
      void buildHead();
      void buildBody();
      void buildFoot();
      Person buildPerson();
      }
      ConcreteBuilder
      public class ManBuilder implements PersonBuilder {
      Person person;
      public ManBuilder() {
      person = new Man();
      }
      public void buildbody() {
      person.setBody("建造男人的身体");
      }
      public void buildFoot() {
      person.setFoot("建造男人的脚");
      }
      public void buildHead() {
      person.setHead("建造男人的头");
      }
      public Person buildPerson() {
      return person;
      }
      }
      Dirictor
      public class PersonDirector {
      public Person constructPerson(PersonBuilder pb) {
      pb.buildHead();
      pb.buildBody();
      pb.buildFoot();
      return pb.buildPerson();
      }
      }
      Product
      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;
      }
      }
      public class Man extends Person {
      }
      Test
      public class Test{
      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());
      }
      }
      result
      建造男人的身体
      建造男人的脚
      建造男人的头
  • 相关阅读:
    repair table
    利用逻辑备份恢复部分库表
    Web框架理解
    BootStrape基础使用
    jQuery入门
    BOM操作
    DOM操作
    day12 css样式
    JavaScript基础
    day11 前端知识简单总结
  • 原文地址:https://www.cnblogs.com/nafio/p/9137750.html
Copyright © 2020-2023  润新知