模式解读
时光在路上
非常喜欢学习程序设计,一直在努力中……
展开
-
《Head First 设计模式》之策略(一)
从模拟鸭子应用做起Joe准备做一套成功的模拟鸭子游戏。游戏中会出现各种鸭子,一边游泳戏水,一边呱呱叫。设计了一个鸭子超类(SuPerClass),并让各种鸭子继承此超类。 现在想让鸭子能飞 可怕问题发生了Joe忽略了一件事,并非Duck所有的子类都会飞。 我们能做的,只有根据鸭子的特性,覆写fly()方法才可以,该fly()或者实现一定原创 2012-10-26 09:16:57 · 2564 阅读 · 6 评论 -
《Head First 设计模式》之策略(四)
动态设定行为①、在Duck类中,加入两个新方法。从此以后,我们可以调用这个方法改变鸭子的行为。// 动态设定行为 public void setFlyBehavior(FlyBehavior fb){ flyBehavior = fb; } public void setQuackBehavior(QuackBehavior qb){ quackBehavior = qb;原创 2012-10-26 16:54:50 · 1530 阅读 · 2 评论 -
《Head First 设计模式》之策略(二)
针对接口编程设计原则:针对接口编程,而不是针对实现编程。“针对接口编程”真正的意思是“针对超类型(Supertype)编程”,这个接口可能指的是abstract class,可能指的是interface。“针对接口编程’,关键就在多态。利用多态,程序可以针对超类型编程,执行时会根据实际状况执行到真正的行为,不会被绑死在超类型的行为上。“针对超类型编程”这句话,可以更明确地说原创 2012-10-26 10:34:45 · 1863 阅读 · 1 评论 -
《Head First 设计模式》之策略(三)
测试Duck的代码①、输入并编译下面的Duck类,以及前面的MallardDuck类public abstract class Duck{ // 为行为接口类型声明两个引用变量,所有鸭子子类都继承他们 FlyBehavior flyBehavior; QuackBehavior quackBehavior; public Duck(){ } public abstrac原创 2012-10-26 11:28:08 · 1299 阅读 · 1 评论 -
反射机制剖析(二): 利用抽象工厂实现BeanFactory
将BeanFactory保存在ServletContext中,ServletContext充当Web和业务逻辑的桥梁 统一工厂创建和管理对象利用抽象工厂+单例+反射实现BeanFactory.java/** * 抽象工厂 * 采用单例 * @author TCH * */publicclass BeanFactory {privatestatic BeanFa原创 2013-05-14 03:16:42 · 2443 阅读 · 3 评论 -
反射机制剖析(三): 谈谈代理模式是如何体现反射的
引出问题(打印日志为例)程序运行应该记录运行日志信息,以作记录和分析。打印日志代码放在实现类UserManagerImp中UserManagerImpl.javapublic class UserManagerImpl implements UserManager { publicvoid addUser(String userId, String userName) {System.out原创 2013-05-14 10:56:01 · 2296 阅读 · 2 评论 -
反射机制剖析(一):谈谈工厂家族
工厂用来隐藏产品创建细节 简单工厂好处:客户不用知道具体电视——长虹的组装过程,是在工厂内部完成创建电视过程的。不足:增加电视,需要修改工厂,增加if语句或者switch分支,又得对稳定代码重新测试。 工厂方法好处:对简单工厂中的工厂继续划分职责,从而很好的支持OCP原则开放扩展,关闭修改适合单一系列产品的创建不足:如果是多个系列产品,也原创 2013-05-14 03:12:16 · 1920 阅读 · 4 评论 -
命令模式在MVC框架中的应用
命令模式在MVC中的应用: Struts中,在模型层都要继承一个Action接口,并实现execute方法,其实这个Action就是命令类。为什么Struts会应用命令模式,是因为Struts的核心控制器ActionServlet只有一个,相当于Invoker,而模型层的类会随着不同的应用有不同的模型类,相当于具体的Command。这样,就需要在ActionServlet和模型层之间解耦,而命令模式正好解决这个问题。原创 2014-07-30 16:58:47 · 3896 阅读 · 13 评论