设计模式(C++):http://blog.csdn.net/column/details/mydesignpattern.html?&page=1
装饰模式:
public class Wrapper { public static void main(String[] arg) { Human one = new Chinese(new Man(new Person("张三"))); Human two = new Chinese(new Woman(new Person("邓丽君"))); Human three = new American(new Man(new Person("乔布斯"))); Human four = new American(new Woman(new Person("露茜"))); System.out.println(one.showInfo()); System.out.println(two.showInfo()); System.out.println(three.showInfo()); System.out.println(four.showInfo()); } }
http://blog.csdn.net/aqi00/article/details/51258563
访问者模式:
我们去银行柜台办业务,一般情况下会开几个个人业务柜台的,你去其中任何一个柜台办理都是可以的。我们的访问者模式可以很好付诸在这个场景中:对于银行柜台来说,他们是不用变化的,就是说今天和明天提供个人业务的柜台是不需要有变化的。而我们作为访问者,今天来银行可能是取消费流水,明天来银行可能是去办理手机银行业务,这些是我们访问者的操作,一直是在变化的。
http://blog.csdn.net/lcl_data/article/details/11607377
策略模式:
每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。 而策略模式就是对算法进行包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。
这里用CS里的人物作为例子,每个人都可以有几个武器,武器之间动态切换,武器拥有统一的攻击命令。
http://blog.csdn.net/lcl_data/article/details/10255125