Head first Design Pattern中有这样一段话
有些代码会依赖特定的类型,而这样的代码一导入装饰者,会出问题
这里将的有些抽象啊,想不到具体的情况,能不能帮我讲解一下或者举个例子?设计模式
有些代码会依赖特定的类型,而这样的代码一导入装饰者,会出问题
这里将的有些抽象啊,想不到具体的情况,能不能帮我讲解一下或者举个例子?设计模式
解决方案 »
- 大家好 我想问一下查询400w 如何查寻速度快,求做过的帮帮
- 请教!请教!呵呵!有你的回报!j2se问题!
- JTable 连接数据库刷新问题~~~~~~急~~~~~~
- 女人生孩子的算法问题 ^O^
- 请问如何让程序延时
- 判断中文半角全角的问题:
- 大家看这个程序,请问,子类overWrite 父类的方法,形参一定要一样吗?构造函数和普通函数的覆盖有没有区别?
- 请问java中有什么反编译工具,就像.net中的ildasm一样的东西?
- 关于JPopupMenus的sub menus
- 关于JFileChoose的问题
- Graphics2D rotate之后如何获得line的坐标?
- 【100分】java 服务器开发Socket 多线程的问题
http://www.cnblogs.com/god_bless_you/archive/2010/06/10/1755212.html
package daniel.designpattern;interface Programmer{
public abstract String skill();
}class BaseProgrammer implements Programmer{ @Override
public String skill() {
return "I can write program";
}
}abstract class ProgrammerDecorator implements Programmer{
protected Programmer specificProgrammer;
public ProgrammerDecorator(Programmer specificProgrammer){
this.specificProgrammer = specificProgrammer;
}
public String skill(){
return specificProgrammer.skill();
}
}class JavaProgrammer extends ProgrammerDecorator{ public JavaProgrammer(Programmer specificProgrammer) {
super(specificProgrammer);
}
public String skill(){
return specificProgrammer.skill() + programmingLanguage();
}
public String programmingLanguage(){
return " using Java";
}
}class CProgrammer extends ProgrammerDecorator{ public CProgrammer(Programmer specificProgrammer) {
super(specificProgrammer);
}
public String skill(){
return specificProgrammer.skill() + programmingLanguage();
}
public String programmingLanguage(){
return " using C";
}
}public class DecoratorPattern {}package daniel.designpattern;public class FactoryPatternTest {
public static void main(String[] args){
Production pro1 = FactoryPattern.createFactoryPattern("product1");
pro1.showType();
Production pro2 = FactoryPattern.createFactoryPattern("product2");
pro2.showType();
}
}
Programmer javaProgrammer = new JavaProgrammer(new BaseProgrammer());
System.out.println(javaProgrammer.skill());
Programmer cProgrammer = new CProgrammer(new BaseProgrammer());
System.out.println(cProgrammer.skill());
Programmer masterProgrammer = new JavaProgrammer(new CProgrammer(new BaseProgrammer()));
System.out.println(masterProgrammer.skill());
}
}