1.6建造者模式(生成器模式) Builder

简介: 1.概念:将一个复杂对象的构建和他的表示分离,使得同样的构件可以创建不同的表示。 2.实例:肯德基和中餐,肯德基抽象了整个做菜的复杂过程(相同的构建),然后在不同的店铺进行实现(不同的表示)。中餐往往做菜是没有统一的过程的。
1.概念:将一个复杂对象的 构建和他的 表示分离,使得同样的构件可以创建不同的表示。
2.实例:肯德基和中餐,肯德基抽象了整个做菜的复杂过程(相同的构建),然后在不同的店铺进行实现(不同的表示)。中餐往往做菜是没有统一的过程的。
 
3.类图:
     
4.Code
      public abstract class PersonBuilder 
      {
          protected Graphics g;
          protected Pen p;
          public PersonBuilder(Graphics g,Pen p)
          {
               this.g=g;
               this.p=p;
          }
 
          public abstract void BuildHead();
          public abstract void BuildBody();
          public abstract void BuildOther();
      }
 
         public class ThinPerson :PersonBuilder
         {
               public ThinPerson(Graphics g,Pen p):base(g,p){}
               public  override void BuildHead(){}
               public  override void BuildBody() { }
               public  override void BuildOther() { }
         }
 
          public class FatPerson : PersonBuilder 
          {
               public FatPerson(Graphics g, Pen p) : base(g, p) { }
               public override void BuildHead() { }
               public override void BuildBody() { }
               public override void BuildOther() { }
          }
 
          public class PersonDirector 
          {
               private PersonBuilder _pb;
               public PersonDirector(PersonBuilder pb) 
               {
                    _pb = pb;
               }
 
               public void CreatePerson() 
               {
                    _pb.BuildHead();
            _pb.BuildBody();
                    _pb.BuildOther();
               }
          }
 
     思考:如果少了 PersonDirector,客户端创建一个人,需要调用三个方法,而且可能调用遗漏
               为此,必须新增PersonDirector类,进行统一管理。
 
      客户端:
          ThinPerson tp=new ThinPerson(picturebox1.CreateGraphics(),new Pen(Color.Red));
          PersonDirector pd=new PersonDirector(tp);
          pd.CreatePerson();
 
5.扩展考虑:
     5.1如果新增一个TallPerson呢? 继承PersonBuilder即可
     5.2如果需要 细化人物生成?比如创建左脚,右脚等等呢?在子类新增。
 
6.使用环境
      复杂类,内部构建顺序是稳定的,但是具体的构建是复杂变化的
 
 
 
 
 
目录
相关文章
|
6月前
|
设计模式 安全 Java
构建未来应用:Java设计模式 - 建造者模式(Builder)在现代编程中的应用
【4月更文挑战第7天】建造者模式是提升代码质量的关键,尤其在复杂环境中。它分步骤构建对象,将构建与表示分离,适用于UI构建、数据模型组装、配置文件解析和网络请求构造等场景。最佳实践包括明确构建步骤、提供默认值、支持链式调用和确保线程安全。然而,过多步骤、不一致状态和性能问题是使用时需注意的问题。掌握建造者模式对于现代编程至关重要。
84 3
|
2月前
|
设计模式 算法
设计模式--建造者模式 builder
这篇文章通过一个电脑购买的例子,详细解释了建造者模式的四个角色(产品类、抽象构建者、实体构建类和指导者类),并提供了相应的代码实现,阐述了建造者模式在设计复杂对象时的应用和优势。
设计模式--建造者模式 builder
|
设计模式 算法 Java
Java设计模式-建造者模式(Builder)
Java设计模式-建造者模式(Builder)
|
设计模式
创建型-Builder
Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。 实际上,建造者模式的原理和代码实现非常简单,掌握起来并不难,难点在于应用场景。 直接使用构造函数或者配合 set 方法就能创建对象,为什么还需要建造者模式来创建呢?
188 0
|
设计模式 算法 Java
浅谈JAVA设计模式之——建造者模式(Builder)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
153 0
浅谈JAVA设计模式之——建造者模式(Builder)
|
存储 设计模式 Java
JAVA设计模式(04):创建型-建造模式(Builder)
转载自: http://blog.csdn.net/lovesomnus/article/details/23743049
174 0
JAVA设计模式(04):创建型-建造模式(Builder)
|
Java 设计模式