design patterns
yourszhu
这个作者很懒,什么都没留下…
展开
-
设计模式学习之基本概念
设计模式基本概念: 模式的概念里最最早由建筑大师Christopher Alexander提出,他说:"每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。 模式的定义:模式是一种问题的解决思路,它已经适用于一个实践环境,并且可以适用于其他环境。设计模式通常是对于某一类软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用已有的软件...2007-10-08 09:36:15 · 183 阅读 · 0 评论 -
设计模式之Facade
意图: 为了子系统中的一组接口提供一个一致的界面(访问方式),Facade模式定义了一个高层接口,这个接口使得这一子系统更加 容易使用. 场景: 我们(客户端)需要访问一个子系统,但是子系统中的功能很多,而我们只需要使用一部分功能,这时就可以使用Facade模式,创建一个或一组新的类(外观)提供需要的功能. 使用Facade前: 使用Facade后: 效果: 客户端直接和外观交互...2007-10-19 12:14:51 · 208 阅读 · 0 评论 -
设计模式之Adapter
意图: 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使原本由于接口不兼容而不能在一起工作的那些类可以一起工作. 解释:我们需要一种方法,为一个内容合适但接口不匹配的对象创建一个新的接口. 效果: Adapter模式让现存的对象适应新的类结构,而不受他们的接口限制. 实现: 创建一个拥有所需接口的新类,然后包装原来类的方法,从而有效地包容被适配的对象....2007-10-19 12:30:38 · 84 阅读 · 0 评论 -
设计模式之Strategy
问题: 我们真的无法断定新的需求将怎样变化. 如果我们试图发现事情将怎样变化,我们将永远停留在分析阶段. 如果我们试图边写我们的软件让它能添加新的功能,我们将永远停留在设计阶段. 我们的时间和预算不允许我们这样做. 意图: 让你可以使用不同的业务规则或算法. 解决方案: 将算法的选择和算法的实现相分离,让客户可以基于场景作出选择. 实现: 让使用算法的类(Context)包含一个抽象类(Strat...2007-10-19 12:41:44 · 80 阅读 · 0 评论 -
设计原则
针对接口编程,而不是针对实现编程. 优先使用对象组合,而不是类继承. 考虑你的设计中哪些是可变的(不是考虑什么会迫使你的设计改变,而是考虑你想要什么变化而不会引起重新设计,用现有设计有效对付变化), 并封装变化的概念. 高内聚低耦合:高内聚的意思就是把逻辑上可以归在一起的东西放在一起。 ...2007-10-19 12:45:22 · 74 阅读 · 0 评论 -
设计模式之Decorator
意图: 动态地给一个对象添加一些额外的职责. 就增加功能来说, Decorator模式相比生成子类更为灵活. 问题: 你需要使用的对象执行你要求的基本功能. 但是, 你可能需要为这个对象添加某些功能, 这些附加功能可能发生在对象的基础功能之前或之后. 效果: 被添加的功能属于小的对象. 好处是可以在ConcreteComponent对象的功能之前或之后动态添加功能. 注意: 虽然一个...2007-10-19 14:27:54 · 89 阅读 · 0 评论 -
设计模式之Template Method
Template Method是我们最常用的模式,也是最好理解的模式了. 意图: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 问题: 需要遵循一个过程或一系列步骤, 它们在某个具体层次上保持一致, 但单个步骤在更详细的层次上可能有不同的实现. 效果: 模板为代码复用提供了...2007-10-19 14:28:42 · 83 阅读 · 0 评论 -
设计模式之Command
意图: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作. 别名: Action , Transaction command 模式是回调机制的一个面向对象的替代品. 回调函数: 函数先在某处注册,而它将在稍后某个需要的时刻被调用. 命令模式使用一个Command对象来定义一个发送者和一个接收者之间的绑定关系,从而支持解耦. ...2007-10-19 14:36:23 · 159 阅读 · 0 评论 -
设计模式之Observer
观察者模式又被称为依赖(Dependents)或发布-订阅模式(Publish-Subscribe). 意图: 定义对象间的一种一对多的依赖关系, 当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新. 问题: 当某个事件发生时,你需要相一系列对象发出通知, 而这个对象的列表是变化的. 实现: 让"希望知道某个事件何时发生"的对象(Observer)将自己注册到另一...2007-10-19 14:36:49 · 85 阅读 · 0 评论