设计模式
pizi0475
这个作者很懒,什么都没留下…
展开
-
单件模式(Singleton Pattern)
概述 Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任。 从另一个角度来说,Singleton模式其实也是一种职责型模式。因为我们创建了一个对象,这个对象扮转载 2009-06-04 16:52:00 · 1489 阅读 · 0 评论 -
简单工厂、工厂、抽象工厂的区别
<br />解释一<br />工厂方法模式的核心是一个抽象工厂类,而简单工厂模式把核心放到了一个具体类上. <br /> <br />简单工厂是工厂方法模式的特例。 <br />工厂方法模式和抽象工厂模式的最主要的区别在于对工厂的抽象程度上。 <br />抽象工厂模式中一般是抽象出工厂接口,表示他就是一个工厂,而不管它是制造什么产品的工厂,他的抽象程度较高。 <br />而工厂方法模式的抽象工厂一般是针对于产品进行抽象,表示它是一个生产某类产品的工厂。 <br /> <br />简单工厂是不支持继转载 2011-04-04 16:38:00 · 1527 阅读 · 0 评论 -
抽象工厂模式-与-工厂方法模式区别
<br />对于java来说,你能见到的大部分抽象工厂模式都是这样的:<br />它的里面是一堆工厂方法,每个工厂方法返回某种类型的对象。 <br />比如说工厂可以生产鼠标和键盘。那么抽象工厂的实现类(它的某个具体子类)的对象都可以生产鼠标和键盘,但可能工厂A生产的是罗技的键盘和鼠标,工厂B是微软的。<br />这样A和B就是工厂,对应于抽象工厂;<br />每个工厂生产的鼠标和键盘就是产品,对应于工厂方法;<br />用了工厂方法模式,你替换生成键盘的工厂方法,就可以把键盘从罗技换到微软。但是用了抽象工转载 2011-04-04 16:41:00 · 1530 阅读 · 0 评论 -
简单工厂模式和抽象工厂模式的通俗理解
<br /> <br />以造汽车为例来通俗的说一下:(写的不好或有错误的地方欢迎大家指正)汽车制造商要造汽车卖给客户,那应该如可来做?看下面: 第一:汽车制造商要知道客户要什么样的汽车,即设计汽车; 第二:设计完后,一切ok后,就可以制造汽车了; 根据上面二步描述,我们用程序表达出来就是(假设现在要造一辆Buick): a. 设计师和工程师去设计汽车;<br /> public class BuickCar //设计buick车<br /> ...{<br /> ……转载 2011-04-04 16:44:00 · 2112 阅读 · 0 评论 -
简单工厂,工厂方法,抽象工厂
<br />简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。<br />本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。<br />简单工厂<br />简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。<br />不修改代码的话,是无法扩展的。<br /><br />工厂方法<br />工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的转载 2011-04-12 10:57:00 · 1422 阅读 · 0 评论 -
设计模式之创建型模式
设计模式之创建型模式<br />工厂方法模式:提供一个简单的决策类,根据条件生成产品。 <br />抽象工厂模式:提供一个创建并返回一系列产品的接口。 <br />单件模式:某个类只能有一个实例。提供一个全局访问点。(可拓展到有限个实例) <br />生成器模式:将一个复杂对象的构建于呈现分开,以便根据不同需要创建不同的形式。 <br />原型模式:先实例化一个类,然后克隆或者拷贝该类来构建新的实例。可以用共有方法进一步修改这些实例。 <br /> <br />难点:抽象工厂模式与生成器模式的比较 <br转载 2011-04-12 10:58:00 · 1484 阅读 · 0 评论 -
设计模式能够解决的问题
GOF指出了设计模式可以解决的问题,这些问题存在时可以考虑使用设计模式。1.通过显示指定类创建对象 创建对象的最简单方法是采用New关键字直接调用类的构造函数,例如我们声明一个针对SQL Sever的数据库连接:IdbConnection dc=new SqlDataConnection();产生的问题是当我们希望采用Oracle数据库时,代码就要发生变化。更糟糕的是,针转载 2012-05-14 15:22:06 · 2650 阅读 · 0 评论 -
设计模式解决的问题
初学设计模式的时候,并不知道它能带来怎样的惊喜。只有当你积累到一定程度,作系统设计的时候,才能体会到其精妙之处。而这等精妙之于辈还停留在窥探之境的人来说,似乎是“不识庐山真面目”。为了让自己能对其有个通体了解,明白其解决问题的思路,特摘抄了一段关于描述一些导致重新设计的一般原因,以及解决这些问题的设计模式:(注明摘抄自《设计模式——可复用面向对象软件的基础,机械工业出版社》一书,第1章,P16-1转载 2012-05-14 15:40:30 · 1492 阅读 · 0 评论 -
游戏开发中常用的设计模式
来源:http://blog.csdn.net/duzhi5368/archive/2008/04/22/2314232.aspx 使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的。但是在“四人帮”的设计模式概述中提到了23种标准设计模式,不但难以记住,而且有些设计模式更多的适用于应用程序开发,对游戏项目引擎设计并没有很多的利用价值。根据经验,精挑细选后,笃志在这里记录一些自认转载 2012-07-06 16:57:46 · 1531 阅读 · 0 评论 -
一种经典的网络游戏服务器架构
首先,二话不说,上图(用Windows画图画的。。。)这个图是一个区的架构图,所有区的架构是一样的。上面虚线框的ServerGroup和旁边 方框内的架构一样。图上的所有x N的服务器,都是多台一起的。红线,绿线,和蓝线图上也有图示,这里就不多介绍了。关于Agent Server大家也能看出来,其实就是Gate。这里主要介绍下图上的标记了号码的位置的数据连接的内容和意义。1-转载 2010-05-18 23:00:00 · 2259 阅读 · 1 评论 -
C++设计模式-原型模式
定义用原型(Prototype)实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 结构 理解1. Prototype是原型基类,提供Clone纯虚方法,它根据不同的派生类来克隆不同的对象。2. ConcretePrototype是原型具体类。实现Clone方法,克隆自己,返回克隆后的新对象。3. Client调用基类转载 2010-05-13 23:15:00 · 2540 阅读 · 2 评论 -
设计模式与追MM
1、FACTORY?追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户转载 2010-03-11 09:13:00 · 1582 阅读 · 1 评论 -
观察者模式
观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,并且将他做好。观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。 观察者模式有很多转载 2010-03-15 14:58:00 · 1308 阅读 · 0 评论 -
MFC框架中的设计模式分析
摘要:分析MFC的视图-文档(View-Document)框架中使用到的设计模式,阐述了这些设计模式的原理和结构,并详细介绍了各种设计模式在MFC中的具体实现方法。关键字:MFC 设计模式 视图-文档框架中图分类号:TP311An Analysis of Design Patterns in MFC FrameworkAbstract: In this paper, the des转载 2010-04-09 16:16:00 · 3039 阅读 · 0 评论 -
访问者模式(Visitor Pattern)
访问者模式是一种分离对象数据结构与行为的方法,通过这种分离,可以为一个已存在的类或类群(即被访问者)增加新的操作(即访问者)而无需为它们作任何修改。访问者模式属于行为型模式。为什么要使用访问者模式? 如何扩展一个现有的类层次结构来实现新行为?一般的方法是给类添加新的方法。但是万一新行为和现有对象模型不兼容怎么办?还有,类层次结构设计人员可能无法预知以后开发过程中将会需要哪些功能。以及,如转载 2010-05-05 22:02:00 · 1340 阅读 · 0 评论 -
Command模式
作用: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作. UML结构图: 解析: Comnand模式的思想是把命令封装在一个类中,就是这里的Command基类,同时把接收对象也封装在一个类中就是这里的Receiver类中,由调用这个命令的类也就是这里的Invoker类来调用.其实,如果弄清楚了Command转载 2010-05-06 21:53:00 · 1402 阅读 · 0 评论 -
设计模式C++实现-Command模式
定义: 命令模式将“请求”封装成对象,以便试用不同的请求,队列或者日志来参数化其他对象。命令模式也可支持可撤销的操作。UML图: 程序实现:view plaincopy to clipboardprint?/************************************************************************/ /*转载 2010-05-06 21:55:00 · 1678 阅读 · 0 评论 -
策略模式C++实现
先看一下策略模式的UML类图: 从类图可以看出,策略模式基本和简单工厂模式没什么区别,从我的理解他们两个最大的区别就是:简单工厂模式是实现对象的多样性,而策略模式适合类中的成员以方法为主; 简单工厂模式只能解决对象创建问题,对于经常变动的算法应使用策略模式。 放代码看看吧:Cpp代码 //策略基类 class COperation {转载 2010-05-07 21:26:00 · 2966 阅读 · 2 评论 -
C++设计模式-组合模式
定义将对象组合成树形结构以表示“部分-整体”的层次结构。组合(Composite)模式使得用户对单个对象和组合对象的使用具有一致性。 结构 理解1. Component是组合对象的基类,定义了类的公共方法;提供一个访问和管理子组件的方法。管理子组件的方法:Add-添加子组件;Remove-移除子组件;GetChild-遍历获取组建对象的指针。O转载 2010-05-13 23:12:00 · 2846 阅读 · 0 评论 -
better fog
websitearticlesbetter fogIntroFog is very popular element in computer graphics, so popular that in fact we are always introduced to it early in textbooks or tutorials. However these textbo转载 2016-10-28 19:26:00 · 1196 阅读 · 0 评论