无废话C#设计模式之十二:Bridge


  本系列文章将向大家介绍一下C#的设计模式,此为第十二篇文章,相信对大家会有所帮助的。废话不多说,继续来看。

  意图

  将抽象部分与实现部分分离,使它们都可以独立的变化。

  场景

  还是说我们要做的网络游戏,多个场景需要扩充的问题我们已经采用了创建型模式来解决。现在的问题就是,不仅仅是游戏场景会不断扩充,而且游戏的模式也在不断扩充。比如,除了最基本的战斗模式之外,还会有道具模式,金币模式等。

  对于这种在多个维度上都会有变化或扩充需求的项目来说,可以考虑引入桥接模式。或许你会说,不管是什么场景,不管什么模式,都可以是抽象场景的一个子类,但是,如果这样的话,4个场景和3种模式就会产生12个子类,而10个场景5种模式就会有50个子类。一味进行继承并不是什么好方法,桥接模式的思想是把继承转化为组合,把乘法(10*5=50)转化为加法(10+5=15)。

  示例代码

  using System;
  using System.Collections.Generic;
  using System.Text;
  namespace BridgeExample
  {
  class Program
  {
  static void Main(string[] args)
  {
  PatrixScene halfPaper = new HalfPaper();
  halfPaper.Mode = new GoldMode();
  halfPaper.LoadScene();
  PatrixScene matrix = new Matrix();
  matrix.Mode = new PrpoertyMode();
  matrix.LoadScene();
  }
  }
  abstract class PatrixScene
  {
  protected GameMode mode;
  public GameMode Mode
  {
  get { return mode; }
  set { mode = value; }
  }
  public abstract void LoadScene();
  }
  class HalfPaper : PatrixScene
  {
  public override void LoadScene()
  {
  Console.WriteLine("Load HalfPaper Completed");
  mode.InitScene();
  }
  }
  class Matrix : PatrixScene
  {
  public override void LoadScene()
  {
  Console.WriteLine("Load Matrix Completed");
  mode.InitScene();
  }
  }
  abstract class GameMode
  {
  public abstract void InitScene();
  }
  class PrpoertyMode : GameMode
  {
  public override void InitScene()
  {
  Console.WriteLine("Init Property Mode Completed");
  }
  }
  class GoldMode : GameMode
  {
  public override void InitScene()
  {
  Console.WriteLine("Init Gold Mode Completed");
  }
  }
  }



相关阅读:
JS操作Cookie 大全
CERT? Advisory CA-2003-25 Buffer Overflow in Sendmail
如何在Linux下来查看OS系统块的大小
查询数据排名情况SQL
ASP代码实现自动清除替换ACCESS(MDB)数据库的日文字符的
Windows 2008远程桌面多用户登陆的配置方法
Ajax标签导航效果
MySQL 4.1.0 中文参考手册 译者序
js+CSS 图片等比缩小并垂直居中实现代码
Sql Server制作全局临时表
包含文件
深入讲解“database link”的设置和使用
用CSS打造可折叠伸缩名片菜单
JScript 和 VBScript 正则表达式
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 缘聚缘散,红尘如梦 检验员工作计划 风筝——断了线 酒席座次怎样做排列 本想优雅转身,不料花丽撞墙 关于勤劳的励志句子 描写校园的好词好句好段大全 一切因爱的存在 图书约稿合同(1) 公司员工五四青年节演讲稿 公司出纳个人工作总结 花开的声音作文 小学六年级作文650字:快乐的寒假 一 煮竹筒饭 篮之翼 医药销售代表年终工作总结 期望中的房子 清音廿五弦 2016政府干部培训工作总结 夏夜的江滨公园400字 纺织商贸城管委会工作总结 悄然间,一曲离歌绕指柔 麦琪的礼物读书笔记 关于教师节的作文300字:特殊的节日 《太阳和月亮》读后感300字 十月“沙光”赛羊汤 妈妈被骗作文300字 千古名君读后感 免费《三峡》同步练习1 心情烦闷之极 月色下的南门湖 月亮湾作文 桃花尽日随流水,洞在清溪何处边?作文500字 月似青莲,漫夜色 佛的哭泣 师傅,对手?作文200字 张老师的声音作文700字 电力三不伤害保证书 宽容让爱生辉 温馨的回忆作文800字 我学习中的好榜样作文900字 教师述职报告的模板 风作文1000字 傻瓜,失恋并不可怕,可怕的是你始终放不下 网友鼎力搜集爱情语录合集 镇妇联2009年度上半年工作总结 讽刺女人的句子 时间的梦境1作文650字 感谢魔法瘦身宿舍_700字高三作文 给孩子鼓励的话 我爱白云

Copyright © 2016 phpStudy |