• 定义:

  建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。

  • 适用性:

当流程算法可以固定几个步骤,步骤的算法步骤执行顺序固定,且制造的产品可以唯一确定,这时使用创建者模式。

  • 模式思想:

对算法步骤进行封装(Director),对流程算法步骤有统一的接口Builder,算法具体的每个步骤变化时,可以通过实现算法步骤借口类进行扩展或适配(ConcreteBuilder1,ConcreteBuilder2…),Director不关心流程步骤,只负责流程算法执行顺序,从而达到了解耦,依赖倒置的思想。

  • 模式结构图:

设计模式(四)(Builder)创建者模式

  • 示例:

  Builder:

 1     /// <summary>
 2     /// Description of ValidateCodeBuilderBase.
 3     /// </summary>
 4     public abstract class ValidateCodeBuilderBase
 5     {
 6         protected ValidateCodeInfo ValidateCodeInfo=new ValidateCodeInfo();
 7         
 8         //生成随机数
 9         public abstract void CreateRandom();
10         
11         //绘制验证码图片
12         public abstract void CreateImageBmp();
13         
14         //混淆验证码图片
15         public abstract void DisposeImageBmp();    
16         
17         // 存放到session中
18         public abstract void SetSession();
19         
20         /// <summary>
21         /// 返回生成的验证码信息
22         /// </summary>
23         public abstract ValidateCodeInfo GetResult();
24     }

  Director:

 1 public class ValidateCodeDirector
 2 {
 3         private ValidateCodeBuilderBase builder=null;
 4         
 5         public ValidateCodeDirector(ValidateCodeBuilderBase builder)
 6         {
 7             this.builder=builder;
 8         }
 9         
10         public ValidateCodeInfo MakeValidateCode()
11         {
12             this.builder.CreateRandom();
13             this.builder.CreateImageBmp();
14             this.builder.DisposeImageBmp();
15             this.builder.SetSession();
16             
17             return this.builder.GetResult();
18         }
19 }

  Product:

1 public class ValidateCodeInfo
2     {
3         public Bitmap Bitmap{get;set;}
4         
5         public string ValidateCode{get;set;}
6     }

  ConcreteBuilder1:

 1 public class ValidateCode_Style01:ValidateCodeBuilderBase
 2 {
 3         public override void CreateRandom()
 4         {
 5             //
 6         }
 7         
 8         public override void CreateImageBmp()
 9         {
10             //
11         }
12         
13         public override void DisposeImageBmp()
14         {
15             //
16         }
17         
18         public override void SetSession()
19         {
20             //
21         }
22         
23         public override ValidateCodeInfo GetResult()
24         {
25             return base.ValidateCodeInfo;
26         }
27     }
View Code

相关文章:

  • 2021-07-25
  • 2021-10-16
  • 2021-10-06
  • 2021-08-18
  • 2022-02-25
  • 2021-12-07
  • 2021-09-05
  • 2022-12-23
猜你喜欢
  • 2021-12-16
  • 2022-12-23
  • 2022-02-06
  • 2021-07-26
  • 2021-09-20
  • 2021-10-29
相关资源
相似解决方案