与其说是建造者模式,还不如通俗的说工厂生产模式。当然只是为了自己的理解和应用模式
1、我们需要的是生成需要的组件 A,B……
2、生产流水线通过产品的QA,通过QA的产品就是一个完成的产品,一个可以展示的产品。
3、产品工程师,他给你生产制造的工艺文档,告诉你怎么去完成这个产品的组装
4、出来的产品了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 建造者模式
{
//生成的产品的车间
public class Product
{
private IList<string> parts = new List<string>();
//按顺序添加组件
public void Add(string part)
{
parts.Add(part);
}
//安装组件
public void Show()
{
Console.WriteLine("产品开始在组装……");
foreach (var item in parts)
{
Console.WriteLine("组件" + item + "已装好");
}
Console.WriteLine("产品完成。");
}
}
//产品工程师
public class Builder
{
private Product product = new Product();
//A模块组装
public void BuildPartA()
{
product.Add("手机主板+配件");
}
//B模块组装
public void BuildPartB()
{
product.Add("手机外壳");
}
//获得的产品
public Product GeProduct()
{
return product;
}
//组装成产品
public void Construct()
{
BuildPartA();
BuildPartB();
product.Add("打包成盒");
}
}
class Program
{
private static Builder builder;
static void Main(string[] args)
{
builder = new Builder();
builder.Construct();
Product product = builder.GeProduct();
product.Show();
Console.Read();
}
}
}
看到这张图,是不是发现少了些东西。没错,少了标准流程的东西

改进下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 建造者模式
{
//生成的产品的车间
public class Product
{
private IList<string> parts = new List<string>();
//按顺序添加组件
public void Add(string part)
{
parts.Add(part);
}
//安装组件
public void Show()
{
Console.WriteLine("产品开始在组装……");
foreach (var item in parts)
{
Console.WriteLine("组件" + item + "已装好");
}
Console.WriteLine("产品完成。");
}
}
//产品工程师
public class Builder : PhoneBuilder
{
private Product product = new Product();
//A模块组装
public void BuildPartA()
{
product.Add("手机主板+配件");
}
//B模块组装
public void BuildPartB()
{
product.Add("手机外壳");
}
//获得的产品
public Product GeProduct()
{
return product;
}
//组装成产品
public void Construct()
{
BuildPartA();
BuildPartB();
product.Add("打包成盒");
}
}
//生成手机要的流程,不能偷工减料
public abstract class PhoneBuilder
{
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract void GeProduct();
public abstract void Construct();
}
class Program
{
private static Builder builder;
static void Main(string[] args)
{
builder = new Builder();
builder.Construct();
Product product = builder.GeProduct();
product.Show();
Console.Read();
}
}
}
本文深入讲解建造者模式,通过具体实例展示了如何使用该模式来构建复杂对象,特别强调了产品组装过程的步骤和标准化流程的重要性。
718

被折叠的 条评论
为什么被折叠?



