前言
建造者模式Builder在书中用来对于角色的组装,角色组装可以使用工厂模式来生存角色对象,但是如果要对
角色(双方士兵)作不同差异功能的时候就要再次分开写两个新的工厂类(我方士兵工厂类,敌方士兵工厂类),如果要对士兵类添加新的功能,则可以往工厂类添加方法。
但是这样做会让工厂管理类
这时可以用到建造者模式了
GOF对建造者模式的定义是:
将一个复杂对象的构建流程与它的对象表现分离出来,让相同的构建流程可以产生出不同的对象行为的表现
比如说,配置一辆车子时,都会按照一定的步骤来组装
准备车架-> 外观烤漆 -> 将引擎放入车架 -> 装入内装椅
此时就把组装的流程定义好了,但是具体的需求完全可以由我们来设定
建造者模式
建造者模式可以分两个步骤来实施
1、将赋值的构建流程独立出来,并将整个流程分成几个步骤,其中的每一个步骤可以是一个功能组件的设置,也可以是参数的指定,并且在一个构造方法中,将这些步骤串接起来
2、定义一个专门实现这些步骤(提供这些功能)的实现者,这些实现者知道每一部分该如何完成,并且能接受参数来决定要产出的功能,但不知道整个组装的流程是什么。
流程分析安排,功能分开实现,就能让建造者模式应用在复杂的对象构建流程上。
此时我们需要知道一些术语:
1、Director(建造指示者)
负责对象构建时的流程安排
该类有一个方法,明确定义对象组装的流程,即调用Builder接口方法的顺序
2、Builder( 功能实现接口 )
定义不同的操作方法将“功能分开来实现”
其中每一个方法都是用来提供给某复杂对象的一部分功能,或是提供设置规则
3、ConcreteBuilder( 功能实现者 )
Builder的具体实现,实现产出功能的类。
不同的功能实现者可以产出不同的功能,用来实现不同对象的行为表现功能
4、Product产品
代表最终完成的复杂对象,必须提供方法让Builder类可以将各部分功能设置给它
实现范例
public class Director{
private Product m_product;
public Director(){}
//构建方法
public void Construct(Builder theBulider) {
m_product = new Product();
theBulider.BuilderPart1(m_product);
theBulider.BuilderPart2(m_product);
}
public void Product GetProduct(){
return m_product;
}
}
//建造者接口,确定实现大致功能
public abstruct class Bulider{
public void abstruct void