设计模式---建造者模式(DesignPattern_Builder)

简介: DesignPattern_Builder摘录自:设计模式与游戏完美开发十年磨一剑,作者将设计模式理论巧妙地融入到实践中,以一个游戏的完整实现呈现设计模式的应用及经验的传承 《轩辕剑》之父——蔡明宏、资深游戏制作人——李佳泽、Product...

DesignPattern_Builder

摘录自:设计模式与游戏完美开发

十年磨一剑,作者将设计模式理论巧妙地融入到实践中,以一个游戏的完整实现呈现设计模式的应用及经验的传承 《轩辕剑》之父——蔡明宏、资深游戏制作人——李佳泽、Product Evangelist at Unity Technologies——Kelvin Lo、信仁软件设计创办人—— 赖信仁、资深3D游戏美术——刘明恺 联合推荐全书采用了整合式的项目教学,即以一个游戏的范例来应用23种设计模式的实现贯穿全书,让读者学习到整个游戏开发的全过程和作者想要传承的经验,并以浅显易懂的比喻来解析难以理解的设计模式,让想深入了解此领域的读者更加容易上手。

工程GitHub

BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。

建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。
using UnityEngine;
using System.Collections.Generic;

namespace DesignPattern_Builder
{
    // 含有复杂零件的产品
    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()
        {
            Debug.Log("ShowProduct Functions:");
            foreach(string Part in m_Part)
                Debug.Log(Part);
        }
    }

    // 生成一个产品的抽象类
    public abstract class Builder
    {
        public abstract void BuildPart1(Product theProduct);
        public abstract void BuildPart2(Product theProduct);
    }

    // 组装A产品
    public class ConcreteBuilderA : Builder
    {
        public override void BuildPart1(Product theProduct)
        {
            theProduct.AddPart( "ConcreteBuilderA_Part1");
        }
        public override void BuildPart2(Product theProduct)
        {
            theProduct.AddPart( "ConcreteBuilderA_Part2");
        }
    }

    // 组装B产品
    public class ConcreteBuilderB : Builder
    {
        public override void BuildPart1(Product theProduct)
        {
            theProduct.AddPart( "ConcreteBuilderB_Part1");
        }
        public override void BuildPart2(Product theProduct)
        {
            theProduct.AddPart( "ConcreteBuilderB_Part2");
        }
    }

    // 建造管理 就是理由Builder来建造一个产品
    public class Director
    {
        private Product m_Product;

        public Director(){}

        // 建造
        public void Construct(Builder theBuilder)
        {
            // 开始组装产品
            m_Product = new Product();
            theBuilder.BuildPart1( m_Product );
            theBuilder.BuildPart2( m_Product );
        }

        // 取得成品
        public Product GetResult()
        {
            return m_Product;
        }
    }
}
using UnityEngine;
using System.Collections;
using DesignPattern_Builder;

public class BuilderTest : MonoBehaviour
{

    void Start()
    {
        UnitTest();
    }

    void UnitTest()
    {
        // 建造
        Director theDirectoir = new Director();
        Product theProduct = null;

        // 使用BuilderA建立
        theDirectoir.Construct(new ConcreteBuilderA());
        theProduct = theDirectoir.GetResult();
        theProduct.ShowProduct();

        // 使用BuilderB建立
        theDirectoir.Construct(new ConcreteBuilderB());
        theProduct = theDirectoir.GetResult();
        theProduct.ShowProduct();
    }
}

相关文章
|
3月前
|
设计模式 Java 机器人
Java设计模式-建造者模式
建造者(Builder)模式指将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。它是把对象的构建和表述分离。
44 0
Java设计模式-建造者模式
|
3月前
|
设计模式
设计模式 | 建造者模式
设计模式 | 建造者模式
36 0
|
3月前
|
设计模式 Go 开发工具
Golang设计模式——04建造者模式
Golang设计模式——04建造者模式
23 0
|
6月前
|
设计模式 算法
设计模式10 - 建造者模式【Builder Pattern】
设计模式10 - 建造者模式【Builder Pattern】
16 0
|
6月前
|
设计模式 C++
设计模式之建造者模式(C++)
设计模式之建造者模式(C++)
|
4月前
|
设计模式 Java
Java设计模式【四】:建造者模式
Java设计模式【四】:建造者模式
24 0
|
5月前
|
设计模式 缓存 Java
认真学习设计模式之建造者模式(Builder Pattern)
认真学习设计模式之建造者模式(Builder Pattern)
59 1
|
6月前
|
设计模式 缓存 Java
【设计模式——学习笔记】23种设计模式——建造者模式Builder(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——建造者模式Builder(原理讲解+应用场景介绍+案例介绍+Java代码实现)
53 0
|
13天前
|
设计模式 Java
小谈设计模式(14)—建造者模式
小谈设计模式(14)—建造者模式
|
1月前
|
设计模式 Java
设计模式之建造者模式
设计模式之建造者模式