美文网首页Unity教程合集Unity基础入门分享程序员
设计模式---桥连模式(DesignPattern_Bridge

设计模式---桥连模式(DesignPattern_Bridge

作者: su9257_海澜 | 来源:发表于2017-08-30 09:53 被阅读26次

DesignPattern_Bridge

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

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

工程GitHub

源码注释及命名有所更改,个人感觉会比原版更好理解

  • 桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。
using UnityEngine;
using System.Collections;

namespace DesignPattern_Bridge
{
    // 抽象操作者基类
    public abstract class Implementor
    {
        public abstract void OperationImp();
    }

    //操作者1以及先关操作
    public class ConcreteImplementor1 : Implementor
    {
        public ConcreteImplementor1(){}

        public override void OperationImp()
        {
            Debug.Log("執行Concrete1Implementor.OperationImp");
        }
    }

    //操作者2以及先关操作
    public class ConcreteImplementor2 : Implementor
    {
        public ConcreteImplementor2(){}
        
        public override void OperationImp()
        {
            Debug.Log("執行Concrete2Implementor.OperationImp");
        }
    }

    // 扩展操作基类
    public abstract class Abstraction
    {
        private Implementor m_Imp = null;

        public void SetImplementor( Implementor Imp )
        {
            m_Imp = Imp;
        }

        public virtual void Operation()
        {
            if( m_Imp!=null)
                m_Imp.OperationImp();
        }
    }

    // 扩展操作1
    public class RefinedAbstraction1 : Abstraction
    {
        public RefinedAbstraction1(){}

        public override void Operation()
        {
            Debug.Log("物件RefinedAbstraction1");
            base.Operation();
        }
    }

    // 扩展操作2
    public class RefinedAbstraction2 : Abstraction
    {
        public RefinedAbstraction2(){}

        public override void Operation()
        {
            Debug.Log("物件RefinedAbstraction2");
            base.Operation();
        }
    }

}
using UnityEngine;
using System.Collections;
using DesignPattern_Bridge;

public class BridgeTest : MonoBehaviour
{

    void Start()
    {
        UnitTest();
    }

    // 
    void UnitTest()
    {

        // 生成扩展操作1
        Abstraction theAbstraction = new RefinedAbstraction1();

        // 设定相关操作1
        theAbstraction.SetImplementor(new ConcreteImplementor1());
        theAbstraction.Operation();

        // 设定相关操作2
        theAbstraction.SetImplementor(new ConcreteImplementor2());
        theAbstraction.Operation();

        // 生成扩展操作2
        theAbstraction = new RefinedAbstraction2();

        // 设定相关操作1
        theAbstraction.SetImplementor(new ConcreteImplementor1());
        theAbstraction.Operation();

        // 设定相关操作2
        theAbstraction.SetImplementor(new ConcreteImplementor2());
        theAbstraction.Operation();
    }

}

相关文章

  • 设计模式---桥连模式(DesignPattern_Bridge

    DesignPattern_Bridge 摘录自:设计模式与游戏完美开发 十年磨一剑,作者将设计模式理论巧妙地融入...

  • 结构型设计模式.桥连模式

    概念理解 定义:将抽象部分 (抽象化) 与它的实现部分 (实现化) 分离开来(脱耦),使他们都可以独立变化。桥接模...

  • 设计模式-桥接模式

    设计模式-桥接模式 定义 桥接模式(Bridge Pattern)也称为桥梁模式、接口(Interface)模式或...

  • 桥接模式

    设计模式:桥接模式(Bridge)

  • 设计模式——桥接模式

    设计模式——桥接模式 最近公司组件分享设计模式,然而分配给我的是桥接模式。就在这里记录我对桥接模式的理解吧。 定义...

  • iOS面试之设计模式模块

    设计模式 设计模式内容如下: 责任链模式 桥接模式 命令模式 适配器模式 单例模式 等等 设计原则 单一职责原则 ...

  • JS设计模式-其他1-原型模式 & 桥接模式

    其他设计模式系列开始介绍前端不常用的设计模式有哪些设计模式? 创建性模式原型模式 结构型模式桥接模式 组合模式 ...

  • 设计模式之桥接模式

    设计模式之桥接模式 1. 模式定义 桥接模式又称柄体模式或接口模式,它是一种结构性模式。桥接模式将抽象部分与实现部...

  • iOS面试之设计模式大全

    设计模式 设计模式内容如下: 责任链模式 桥接模式 命令模式 适配器模式 单例模式 等等 设计原则 作为一个开发者...

  • 【设计模式】结构型设计模式汇总

    结构型设计模式汇总 结构型设计模式名称 结构型设计模式主要包括 7 大类: 代理模式 桥接模式 装饰器模式 适配器...

网友评论

    本文标题:设计模式---桥连模式(DesignPattern_Bridge

    本文链接:https://www.haomeiwen.com/subject/bcuzdxtx.html