首页 > 代码库 > 【Unity3D与23种设计模式】建造者模式(Builder)
【Unity3D与23种设计模式】建造者模式(Builder)
GoF中定义:
“将一个复杂的构建流程与它的对象表现分离出来,让相同的构建流程可以产生不同的对象行为表现。”
建造者模式可以分为两个步骤来实施:
1.将复杂的构建流程独立出来,并将整个流程分成几个步骤,其中的每一个步骤可以是一个功能组件的设置,也可以是参数的指定,并且在一个构建方法中,将这些步骤串接起来。
2.定义一个专门实现这些步骤的实现者,这些实现者知道每一个部分该如何完成,并且能接受参数来决定要产出的功能,但不知道整个组装流程是什么。
把握两个原则:“流程分析安排”和“功能分开实现”
public abstract class Builder { public abstract void BuildPart1(Product theProduct); public abstract void BuildPart2(Product theProduct); } public class ConcreteBuilderA : Builder { public override void BuildPart1(Product theProduct) { theProduct.AddPart("ConcreteBuilderA_Part1"); } public override void BuildPart2(Product theProduct) { theProduct.AddPart("ConcreteBuilderA_Part2"); } } public class ConcreteBuilderB : Builder { public override void BuildPart1(Product theProduct) { theProduct.AddPart("ConcreteBuilderB_Part1"); } public override void BuildPart2(Product theProduct) { theProduct.AddPart("ConcreteBuilderB_Part2"); } } public class Product { private List<string> m_Part = new List<string>(); public Product() { } public void AddPart(string Part) { m_Part.Add(Part); } public void ShowProduct() { foreach (string Part in m_Part) { Debug.Log(Part); } } }
//测试类 void UnitTest(){ Director theDirector = new Director(); Product theProduct = null; theDirector.Construct(new ConcreteBuilderA()); theProduct = theDirector.GetResult(); theProduct.ShowProduct(); theDirector.Construct(new ConcreteBuilderB()); theProduct = theDirector.GetResult(); theProduct.ShowProduct(); }
文章整理自书籍《设计模式与游戏完美开发》 菜升达 著
【Unity3D与23种设计模式】建造者模式(Builder)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。