设计模式笔记(九) —— 建造者模式
来源:互联网 发布:淘宝怎么领优酷会员 编辑:程序博客网 时间:2024/06/08 03:20
建造者模式(Builder):Builder是为创建一个Product对象的各个部件指定的抽象接口;
ConcreteBuilder是具体创建者,构造和装配各个部件。
Director是构造一个使用Builder接口的对象。
使用场合:主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常都是稳定的,但对象内部的构造通常面临着复杂的变化。建造者的好处是使得建造代码与表示代码分离,由于建造者隐藏了产品是如何组装的,所以要改变一个产品的内部表示,只需要再定义一个建造者就可以了。
建造者模式是在当创造复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。
- using System;
- using System.Collections.Generic;
- namespace StuDesignMode.Builder
- {
- /// <summary>
- /// 产品
- /// </summary>
- class Product
- {
- private IList<string> _parts = new List<string>();
- public void Add(string part)
- {
- _parts.Add(part);
- }
- public void Show()
- {
- Console.WriteLine("/n产品 创建--------");
- foreach (string part in _parts)
- {
- Console.WriteLine(part);
- }
- }
- }
- /// <summary>
- /// 抽象建造者
- /// </summary>
- abstract class AbsBuilder
- {
- public abstract void BuildPartA();
- public abstract void BuildPartB();
- public abstract Product GetResult();
- }
- /// <summary>
- /// 具体建造者
- /// </summary>
- class ConcreteBuilder1:AbsBuilder
- {
- private Product product = new Product();
- public override void BuildPartA()
- {
- product.Add("部件A");
- }
- public override void BuildPartB()
- {
- product.Add("部件B");
- }
- public override Product GetResult()
- {
- return product;
- }
- }
- class ConcreteBuilder2 : AbsBuilder
- {
- private Product product = new Product();
- public override void BuildPartA()
- {
- product.Add("部件X");
- }
- public override void BuildPartB()
- {
- product.Add("部件Y");
- }
- public override Product GetResult()
- {
- return product;
- }
- }
- /// <summary>
- /// 指挥者
- /// </summary>
- class Director
- {
- public void Construct(AbsBuilder builder)
- {
- builder.BuildPartA();
- builder.BuildPartB();
- }
- }
- public class ClientTest
- {
- static void Main(string[] args)
- {
- //指挥者
- Director direcotr = new Director();
- AbsBuilder builder1 = new ConcreteBuilder1();
- //指定建造模型
- direcotr.Construct(builder1);
- //得到模型生产出的产品
- Product p1 = builder1.GetResult();
- p1.Show();
- AbsBuilder builder2 = new ConcreteBuilder2();
- direcotr.Construct(builder2);
- Product p2 = builder2.GetResult();
- p2.Show();
- }
- }
- }
- 设计模式笔记(九) —— 建造者模式
- 九、建造者模式——设计模式学习笔记
- 设计模式(九)——建造者模式
- 设计模式—建造者模式(九)
- 设计模式(九)建造者模式
- 设计模式(九):建造者模式
- Java设计模式《九》建造者模式
- 设计模式实现(九)--- 建造者模式(Builder)
- 设计模式之(九、建造者模式Builder)
- 设计模式之python版(九)--建造者模式
- java设计模式(九)--建造者模式
- 设计模式学习笔记——建造者模式
- 设计模式学习笔记——建造者模式
- 设计模式学习笔记——建造者(Builder)模式
- 设计模式学习笔记(十二)—Builder建造者模式
- (九)建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- VS2005编译C++程序报此项目已过期
- css应该注意的小技巧
- 日本工资结构(转载--作者:郭昌华)
- [JavaSricept]自动刷新页面的实现方法总结(转载--作者:郭昌华)
- java的数据结构和算法
- 设计模式笔记(九) —— 建造者模式
- DirectX 3D 基本框架(四)
- windows mobile中开发九宫格界面的方法
- 同步和异步的区别
- CUDA VS Wizard 2.0 beta
- sql面试题
- 记录光标在编辑器中的位置
- android 概述
- 设计模式笔记(十) —— 观察者模式