- 博客(9)
- 收藏
- 关注
原创 白话设计模式_命令模式2:撤销、宏命令示例
上篇介绍了命令模式的理论知识,这里再写两个小例子,加深理解。 1、撤销命令,关键在于命令执行的时侯保存这个命令对象,这就是把操作封装成对象的好处。 //这个不变 public class Light { public void off(){ System.out.println("off..."); } public void on...
2012-09-16 22:03:56
263
原创 白话设计模式_命令模式1
先看例子: //灯:有开、关两个操作 public class Light { public void off(){ System.out.println("off..."); } public void on(){ System.out.println("on..."); } } //命令 public interface Command...
2012-09-16 16:21:55
198
原创 白话设计模式_工厂模式之抽象工厂模式
工厂方法模式只是针对一种产品,虽有多个具体产品,但只有一个抽象产品类;而抽象工厂模式针对多个产品,它有多个抽象产品类,并且每个产品类有多个具体子类产品;抽象工厂模式能够灵活的实现"整套产品"的动态切换。 产品类: public interface Phone {} public interface Vehicle {} //每个抽象产品有两个具体产品子类 pu...
2012-09-10 23:20:51
173
原创 白话设计模式_工厂模式之工厂方法模式
简单工厂虽然对产品生产提供了非常好的封装,但并没有遵循面向对象设计的”开放-关闭原则“,工厂方法模式可解决这个问题。 “开放-关闭原则”:对扩展开放、对修改关闭。什么意思呢?我的理解是:当我们要扩展新功能时,不需要修改原来的代码,简单的添加某个类、或继承某个抽象类、或实现某个接口就可以完成。 再看上篇中SimpleFactory这...
2012-09-10 23:20:37
231
原创 白话设计模式_工厂模式之简单工厂
工厂模式,应该是应用最为广泛、最为重要的设计模式,它里面包括三种:简单工厂(不包括在23种经典的模式中)、工厂方法模式以及抽象工厂模式,由前往后抽象程度越来越高。 先介绍下简单工厂。 编码过程中,我们新手经常会写这样的代码: //other code... //输出设备 OutPut output = null; if(n...
2012-09-10 23:20:22
198
白话设计模式_单例模式
单例模式,最简单的模式,即保证某个类在整个运行过程中仅仅只有一个实例。 私有化构造函数,防止外界随意new一个对象。 那么如何创建实例呢?没有实例导致我们无法操作实例方法,但我们有static静态方法,不需要实例而是直接通过类名就可以调用。 public class Singleton { private static Singleto...
2012-09-06 22:26:13
150
白话设计模式_装饰者模式
装饰者模式,见名知意。装饰装饰,何为装饰,无非就是在某个东西上外面再套一层东西,装饰者模式大概就是这样的。 比如现在有一个类A,我们想为它增加一些新的功能,但又不想修改它原来的代码,怎么办?直接的想法是继承,但继承灵活性并不好,推荐多用组合,少用继承。 应用组合:新建一个类B(装饰者),把A(被装饰者)组合到B中,就可以让B行使A的职能,但应该注意两点: 一、A...
2012-09-06 17:04:28
159
原创 白话设计模式_策略模式
策略模式,顾名思意,针对不同的要求采用不同的策略处理问题。 实际的“策略”通常都是算法簇,处理同一个问题或者执行同一动作可能有多种策略,而这些策略之间的切换如果以硬编码的方式写在代码中,则相当丑陋,策略模式提供了策略切换的一个动态的机制,即可以运行时指定。 比如,现在有一个关于鸭子系统,有一个抽象父类Duck, 里面声明了几个鸭子的动作,如 叫、飞、游泳、展示(...
2012-09-05 23:22:13
186
原创 白话设计模式_观察者模式
好久没搞java了,要找工作了,复习下设计模式~~ 观察者模式:描述的是一对多的关系,当”一”的状态发生变化时,会通知”多”的一端,前提是”多”个对象必须事先注册到”一”的对象上,让“一”知道它们的存在。 举个形象的例子:我们平时订阅杂志,每个订阅者(即观察者)必须到杂志社注册个人信息,杂志社为了在日后能够顺利分发杂志,此时必须保存每个订阅者的信...
2012-09-05 22:24:56
207
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅