
【设计模式】
刘杰友.互联网产品人
只有锦上添花,没有雪中送碳,保持钢铁般的意志,大海般的胸怀,初恋般的激情。互联网产品人的两点抓手 “流量”、“产品”
展开
-
设计模式
<br />一、理解设计模式<br /> 设计模式是编程方式的总结,是被前人发现,总结出来的一套解决某类问题的解决方案。<br /> <br />二、为什么要用设计模式<br /> 前人总结出的经验、方法,当我们应用到软件工程中时,能使我们的软件更灵活,更稳健。要合理运用设计模式不是一件易事,必须充分掌握oo编程思想 + 丰富的实战经验。原创 2010-08-27 12:17:00 · 471 阅读 · 1 评论 -
一、Singleten 单件(创建型)
<br />一、Singleten单件(创建型模式)<br /><br />1、意图: 保证一个类只有一个实例,并提供访问它的全局访问点。<br /><br />2、场景:我们现在要做一个网络游戏的服务端程序,需要考虑怎么样才能承载大量的用户。在做WEB程序的时候有各种负载均衡的方案,不管是通过硬件实现还是软件实现,基本的思想就是有一个统一的入口,然后由它来分配用户到各个服务器上去。 <br /><br /> 需要考虑的问题是,即使在多线程的并发状态下,用户只能通过一个唯一的原创 2010-09-07 22:50:00 · 616 阅读 · 0 评论 -
二、Abstract Factory 抽象工厂模式(创建型)
二、Abstract Factory 抽象工厂模式(创建型)1、意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。2、场景:还是上次说的那个网络游戏,定下来是一个休闲的FPS游戏。和CS差不多,8到16个玩家在游戏里面分成2组对战射击。现在要实现初始化场景的工作。要呈现一个三维物体一般两个元素是少不了的,一是这个物体的骨架,也就是模型,二就是这个骨架上填充的纹理。 我们知道,这样的一个游戏不可能只有一张地图,而且地图的数量肯定是会一直增加的。如果游戏在初始化场景的时候原创 2011-01-13 14:31:00 · 492 阅读 · 0 评论 -
三、Builder 生成器模式(创建型)
<br />三、Builder 生成器模式(创建型)<br />1、意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。<br />2、场景:在电脑城装机总有这样的经历。我们到了店里,先会有一个销售人员来询问你希望装的机器是怎么样的配置,他会给你一些建议,最终会形成一张装机单。和客户确定了装机配置以后,他会把<br /><br />这张单字交给提货的人,由他来准备这些配件,准备完成后交给装机技术人员。技术人员会把这些配件装成一个整机交给客户。<br /> 不管是什原创 2011-01-13 23:30:00 · 702 阅读 · 0 评论 -
四、Factory Method 工厂方法模式(创建型)
<br />四、Factory Method 工厂方法模式(创建型)<br />1、意图:定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。<br /><br />2、场景:上次,我们使用抽象工厂解决了生产一组产品的问题,但是我们把各个场景作为了具体工厂来生产场景模式和场景纹理两个产品。在调用代码中也并没有出现具体工厂的影子。其实,场景类要做的不仅仅是创建具体的产品系列,可能它还需要做一个初始化工作。那么,我们就需要在调用代码中能得到这个场景类。<br /> 在前一节中,由于场景类原创 2011-01-13 23:33:00 · 590 阅读 · 0 评论 -
七、Facade模式 (结构型)
<br />七、Facade模式 (结构型)<br />1、意图:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。<br /><br />2、场景:一个为游戏充值的网站中,创建订单需要与三个外部接口打交道:<br /> 用户系统:根据用户名获取用户ID、查看用户是否已经激活了游戏<br /> 卡系统:查看某种类型的充值卡是否还有库存<br /> 充值系统:创建一个订单,并且返回订单号<br /><br />原创 2011-02-26 15:00:00 · 494 阅读 · 0 评论 -
五、Prototype 原型模式(创建型)
<br />五、Prototype 原型模式(创建型)<br />1、意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。<br /><br />2、场景:游戏场景中的有很多相似的敌人,它们的技能都一样,但是随着敌人出现的位置不同,这些人的能力不太一样。假设,我们现在需要把三个步兵组成一队,其中还有一个精英步兵,能力特别高。那么,你或许可以创建一个敌人抽象类,然后对于不同能力的步兵创建不同的子类。然后,使用工厂方法等设计模式让调用方依赖敌人抽象类。<br /> 问题来了,如原创 2011-02-26 14:49:00 · 600 阅读 · 0 评论 -
六、Adapter 适配器模式 (创建型)
<br />六、Adapter 适配器模式 (创建型)<br />1、意图:把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。<br /><br />2、场景:假设网络游戏的客户端程序分两部分。一部分是和服务端通讯的大厅部分,大厅部分提供的功能有道具购买、读取房间列表、创建房间以及启动游戏程序。另一部分就是游戏程序了,游戏程序和大厅程序虽然属于一个客户端,但是由不同的公司在进行开发。游戏大厅通过实现约定的接口和游戏程序进行通讯。<br />原创 2011-02-26 14:54:00 · 599 阅读 · 0 评论 -
八、Proxy 代理模式 (结构型)
八、Proxy 代理模式 (结构型)1、意图:为其他对象提供一种代理以控制对这个对象的访问。2、场景:代理模式非常常用,大致的思想就是通过为对象加一个代理来降低对象的使用复杂度、或是提升对象使用的友好度、或是提高对象使用的效率。在现实生活中也有很多代理的角色,比如明星的经纪人,他就是一种代理,经纪人为明星处理很多对外的事情,目的是为了节省被代理对象也就是明星的时间。保险代理人帮助投保人办理保险,目的降低投保的复杂度。 在开发中代理模式也因为目的不同效果各不相同。比如,如果我们的网站程序是原创 2011-02-26 15:02:00 · 635 阅读 · 0 评论