文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C++Builder无废话C#设计模式之四:Factory Method
精品推荐
特别推荐
·菜鸟入门 认识C#中的委托和事件
·WINDOWS下的动态鼠标光标控制
热点TOP10
·C++ Builder下数据库报表Master/Detail关系功能的实现
·用Builder C++设计串行口COM1或COM2的读写操作
·无废话C#设计模式之四:Factory Method
·菜鸟入门 认识C#中的委托和事件
·C#动态生成树型结构的Web程序设计
·QuickReport基本知识
·获得文件的版本信息
·C++Builder IDE使用技巧与快捷键
·C++Builder注册表编程实例详解
·在bcb里实现像Winamp那样具有吸附效果的磁性窗口

无废话C#设计模式之四:Factory Method

日期:2007年10月21日 作者: 查看:[大字体 中字体 小字体]


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

  意图

  定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。

  场景

  上次,我们使用抽象工厂解决了生产一组产品的问题,但是我们把各个场景作为了具体工厂来生产场景模式和场景纹理两个产品。在调用代码中也并没有出现具体工厂的影子。其实,场景类要做的不仅仅是创建具体的产品系列,可能它还需要做一个初始化工作。那么,我们就需要在调用代码中能得到这个场景类。

  在前一节中,由于场景类(比如HalfPaper)本身是具体级别的(具体工厂)。那么,我们也不应该在调用代码中直接依赖场景类。因此,我们可以使用工厂方法来生产这个具体产品。

  示例代码

  using System;
  using System.Reflection;
  namespace FactoryMethodExample
  {
  class Program
  {
  static void Main(string[] args)
  {
  Patrix patrix = new Patrix();
  patrix.LoadScene("HalfPaper");
  patrix.LoadScene("Matrix");
  }
  }
  class Patrix
  {
  private PatrixSceneFactory GetGameScene(string gameSceneName)
  {
  return (PatrixSceneFactory)Assembly.Load("FactoryMethodExample").CreateInstance("FactoryMethodExample." + gameSceneName + "Factory");
  }
  public void LoadScene(string gameSceneName)
  {
  PatrixSceneFactory psf = GetGameScene(gameSceneName);
  PatrixScene ps = psf.CreateScene();
  ps.InitScene();
  }
  }
  abstract class PatrixSceneFactory
  {
  public abstract PatrixScene CreateScene();
  }
  abstract class PatrixScene
  {
  public void InitScene()
  {
  Texture texture = CreateTexture();
  Model model = CreateModel();
  model.FillTexture(texture);
  }
  public abstract Model CreateModel();
  public abstract Texture CreateTexture();
  }
  abstract class Model
  {
  public abstract void FillTexture(Texture texture);
  }
  abstract class Texture
  {
  }
  class HalfPaperFactory : PatrixSceneFactory
  {
  public override PatrixScene CreateScene()
  {
  return new HalfPaper();
  }
  }
  class HalfPaper : PatrixScene
  {
  public HalfPaper()
  {
  Console.WriteLine("HalfPaper Creating");
  }
  public override Model CreateModel()
  {
  return new HalfPaperModel();

[1] [2] [3] 下一页 




上一篇:无废话C#设计模式之三:Abstract Factory

下一篇:四个原因让Silverlight无法取代Flash

相关文章:
·如何以安全模式启动计算机
·如何进入QQ空间安全模式
·如何建立一个网站?规划、设计、目的、原则、宣传
·WinXP中的无人安装模式
·综合实例:PS洗衣粉包装设计印刷全攻略
·3DsMAX教程 设计叶片上的精致三维蜻蜓
·几何图形英文字体创意设计及应用作品欣赏
·英文字体创意设计及应用作品欣赏
·3DMAX设计制作两只花瓣上的美丽蝴蝶
·如何使设计作品获得最佳菲林输出?
相关软件:
·C语言程序设计
·Dreamweaver 网页设计
·美工设计教程
·Photoshop CS经典创意设计200例
·Photoshop CS中文版平面设计师标准案例教程
·Windows环境下32位汇编语言程序设计
·颐家IDO在线互动设计软件
·Photoshop 7.0 平面 广告 装帧设计100例
·超级DIY设计器V7.0 build 2143 特别版
·远潮自我形象设计系统

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot