设计模式
gd_2015
这个作者很懒,什么都没留下…
展开
-
设计模式 - Strategy模式
1 分析 可以看到 Strategy 模式和 Template 模式解决了类似的问题,也正如在 Template 模式中 分析的,Strategy 模式和 Template 模式实际是实现一个抽象接口的两种方式:继承和组合之 间的区别。要实现一个抽象接口,继承是一种方式:我们将抽象接口声明在基类中,将具体 的实现放在具体子类中。组合(委托)是另外一种方式:我们将接口的实现放在被组合对象 中,将抽象原创 2016-05-25 17:09:23 · 329 阅读 · 0 评论 -
进击的设计模式 - 目录
1、 设计模式 - Factory 模式 2、 设计模式 - AbstactFactory 模式 3、 设计模式 - Singleton 模式 4、 设计模式 - Builder模式 5、 设计模式 - Prototype 模式 6、 设计模式 - Bridge模式 7、 设计模式 - Adapter模式 8、 设计模式 - Decorator模式 9、 设计模式 - Co原创 2016-05-20 20:47:24 · 336 阅读 · 0 评论 -
设计模式 - Template模式
1 问题在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑 (算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用 算法)是相同的。Template 提供了这种情况的一个实现框架。Template 模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并 定义好细节的接口,子类中实现细节。【注释 1】 【注释1】:Strate原创 2016-05-23 21:00:55 · 306 阅读 · 0 评论 -
设计模式 - Proxy模式
1 问题1)创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理 去完成,GoF 称之为虚代理(Virtual Proxy);2)为网络上的对象创建一个局部的本地代理,比如要操作一个网络上的一个对象(网 络性能不好的时候,问题尤其突出),我们将这个操纵的过程交给一个代理去完成,GoF 称 之为远程代理(Remote Proxy);3)对对象进行控制访问的时候,比如在原创 2016-05-23 20:48:58 · 328 阅读 · 0 评论 -
设计模式 - Facade模式
1 问题为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。2 使用场景 1、为一个复杂子系统提供一个简单接口时, 由于子系统往往因为不断演化而变得越来越复杂, 但这种变化不应该影响到客户的调用, 此时使用 Facade 模式对外提供一个访问的接口; 此外,还可以提供多个 Facade 类以实现不同的子系统的定制; 2、客户与抽象类的实现部原创 2016-05-23 20:31:10 · 392 阅读 · 0 评论 -
设计模式 - Flyweight模式
1 问题面向对象语言的原则就是一切都是对象,但是如果真正使用起来,有时对象数可能显得很庞大,比如,字处理软件,如果以每个文字都作为一个对象,几千个字,对象数就是几千,无疑耗费内存,那么我们还是要"求同存异",找出这些对象群的共同点,设计一个元类,封装可以被共享的类,另外,还有一些特性是取决于应用(context),是不可共享的,这也Flyweight中两个重要概念内部状态intrinsi原创 2016-05-23 20:18:15 · 296 阅读 · 0 评论 -
设计模式 - Composite模式
1、问题在开发中,我们经常可能要递归构建树状的组合结构,Composite 模式则提供了很好的 解决方案。2、代码using UnityEngine;using System.Collections;using System.Collections.Generic;namespace Composite{ public abstract class Component{原创 2016-05-23 19:39:39 · 264 阅读 · 0 评论 -
设计模式 - Decorator模式
1 解决问题在 OO 设计和开发过程,可能会经常遇到以下的情况:我们需要为一个已经定义好的类 添加新的职责(操作),通常的情况我们会给定义一个新类继承自定义好的类,这样会带来 一个问题(将在本模式的讨论中给出)。通过继承的方式解决这样的情况还带来了系统的复 杂性,因为继承的深度会变得很深。而 Decorator 提供了一种给类增加职责的方法,不是通过继承实现的,而是通过组合。 using Unit原创 2016-05-20 21:49:02 · 352 阅读 · 0 评论 -
设计模式 - Adapter模式
1 原理 用C++很好实现,因为C++可以多个继承。但是C#、Java等语言不能多继承类,只能多继承接口。使用这些语言实现Adapter模式,只能将想要适配的两个类或者更多类抽象出接口,然后将适配器继承这些接口,使用方法或者构造方法,将想要适配的类的实例传入适配器,然后通过适配器调用各个的方法。 2 代码using UnityEngine;using System.Collections;nam原创 2016-05-20 20:41:01 · 320 阅读 · 0 评论 -
设计模式 - Bridge模式
1 代码using UnityEngine;using System.Collections;public abstract class AbstractionImp{ public virtual void operation(){ Debug.Log("AbstractionImp....imp..."); }}public class ConcreteAbs原创 2016-05-20 19:40:20 · 446 阅读 · 0 评论 -
设计模式 - Prototype 模式
1 代码using UnityEngine;using System.Collections;public class UtilityObject{ public int Id{get;set;} public string Name{get;set;} public UtilityObject(){} public UtilityObject(int id, stri原创 2016-05-20 18:45:07 · 281 阅读 · 0 评论 -
设计模式 - Builder模式
1 目的 当我们要创建的对象很复杂的时候(通常是 由很多其他的对象组合而成),我们要要复杂对象的创建过程和这个对象的表示(展示)分 离开来,这样做的好处就是通过一步步的进行复杂对象的构建,由于在每一步的构造过程中 可以引入参数,使得经过相同的步骤创建最后得到的对象的展示不一样。2 代码using UnityEngine;using System.Collections;namespace B原创 2016-05-20 17:31:52 · 282 阅读 · 0 评论 -
设计模式 - Singleton 模式
1 作用 创建唯一对象2 代码using UnityEngine;using System.Collections;namespace Single{ public class Single { private static Single instance; public static Single Instance{原创 2016-02-03 17:03:21 · 409 阅读 · 0 评论 -
设计模式 - AbstactFactory 模式
1 问题 要创建一组相关或者相互依赖的对象。2 代码public class ProductA2 : AbstractProductA{ public override void say(){ Debug.Log("ProductA2"); }}public class ProductB1 : AbstractProductB{ public ov原创 2016-02-03 14:40:52 · 493 阅读 · 0 评论 -
设计模式 - Factory 模式
1 问题 1 为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共 接口以形成抽象基类或者接口。 2 父类中并不知道具体要实例化哪一个具体的子类。2 功能 1 定义创建对象的接口,封装了对象的创建; 2 使得具体化类的工作延迟到了子类中。3 代码 不用关心MonoBehaviout,只是在unity引擎的脚本验证原创 2016-02-03 14:20:46 · 437 阅读 · 0 评论