Head First 设计模式
小瑾
这个作者很懒,什么都没留下…
展开
-
HeadFirst 设计模式- 装饰者模式
装饰者模式动态的将责任附加到对象上,可以动态的对功能进行拓展。符合我们的对拓展开放,对修改关闭的原则。装饰模式的角色分别为:抽象组件:给出抽象接口,规范准备给附加对象的责任。具体组件:定义一个要接收附加功能的类。装饰角色:将组件组合进去以完成功能,并定义一个与抽象组件一致的接口。具体装饰角色:负责给组件对象添加附加的责任。 所以通过使用不同的具体装饰类以及这些装饰类原创 2014-02-22 22:00:49 · 646 阅读 · 0 评论 -
HeadFirst设计模式--单例模式
单例模式我们首先提出的疑问是什么是单例模式,为什么需要单例模式?比如有的时候我们对一些对象只用一个,比如线程池。缓存等等。如何保障一个实例的运行呢?或许我们可以使用全局变量,不过全局变量只能提供全局访问,不能确保只有一个实例。全局变量一旦多了,通常有的时候我们自己都忘记了。这点深有感触。看代码的时候也是特别的费劲。单例模式确保一个类只有一个实例,并提供一个全局访问点。usi原创 2014-02-28 15:24:43 · 694 阅读 · 0 评论 -
HeadFirst 设计模式--工厂模式
工厂模式定义一个创建对象的接口,由子类决定要实例化的类。工厂方法将类实例推迟到子类。依赖倒置。第一种方式是:class PizzaStore { PizzaFactory pizzaFactory; public PizzaStore(PizzaFactory factory) { this.pizza原创 2014-02-28 14:10:31 · 797 阅读 · 1 评论 -
HeadFirst设计模式 -策略模式
策略模式策略模式的关键是封装。针对接口编程而不是实现。将具体的行为独立出来,降低类之间的耦合度。具体的从下面的代码中寻出其内在。多用组合,少用继承。using System;using System.Collections.Generic;using System.Text;namespace DesignModel{ class MiniDuckSimulato原创 2014-02-19 18:51:39 · 800 阅读 · 0 评论 -
HeadFirst 设计模式-观察者模式
观察者模式主要是定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。不用被动的实时去查询被主题的状态。交互对象之间是松耦合的。这是一种主动将新消息通知。随后我们将看到由观察者自身判定是否需要最新的数据,主动的去获取通知。具体的代码如下:using System;using System.Collections.Generic;using Sy原创 2014-02-19 19:19:38 · 615 阅读 · 0 评论 -
HeadFirst -- 模板方法模式
模版方法模式1、定义 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。具体的如何理解这定义呢?比如我们煮咖啡与冲泡茶,两者的过程大致是相同的。但是里面的具体内容有细微的差别。其类如下: //本节主要讲模版模式。 class Coffee { public原创 2014-03-10 19:37:36 · 671 阅读 · 0 评论 -
Head First设计模式 -- 命令模式
命令模式定义:将请求封装成对象,以便使用不同的请求队列或者日志来参数化其它对象。 命令模式把发出命令和执行命令的责任分隔开,委派给不同的对象,减少之间的耦合。允许请求方与发送方独立开来,请求方并不需要知道接收请求的方的接口。 也就是说行为请求者与行为实现者之间呈现的松耦合 1、以餐厅点餐为例,服务员不需要知道客户点的是什原创 2014-03-06 16:12:47 · 859 阅读 · 0 评论 -
HeadFirst设计模式--适配器模式
适配器模式定义:将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间。某些时刻因为两个类之间接口并不匹配。尤其是在程序进行改进的时候,对原来的功能进行改进。这个时候为了在不改变原来代码的基础上实现性能的提升,我们需要利用这个接口转换回原来的类。如下的代码: interface Duck { void quack();原创 2014-03-07 09:14:29 · 880 阅读 · 0 评论