6.11 装饰器设计模式

柔情痞子 提交于 2020-03-04 06:01:32

装饰器设计模式

装饰四大部分

1、抽象组件:需要装饰的抽象对象(接口或抽象父类)
2、具体组件:需要装饰的对象
3、抽象装饰类:包含了对抽象组件的引用以及装饰着共有的方法
4、具体装饰类:被装饰的对象

代码示例

code

/**
 * 测试装饰, 模拟将人的声音放大
 * 装饰四大部分
 * 1、抽象组件:需要装饰的抽象对象(接口或抽象父类)	(Say)
 * 2、具体组件:需要装饰的对象	(Person)
 * 3、抽象装饰类:包含了对抽象组件的引用以及装饰着共有的方法
 * 4、具体装饰类:被装饰的对象 (Person)
 * @author dxt
 *
 */
public class DecorateTest01 {
	public static void main(String[] args){
		Say p = new Person();
		p.say();
		Say p2 = new Louder(p);
		p2.say();
		
	}
}
//抽象组件:
interface Say{
	void say();
}
//具体接口
class Person implements Say{
	private int voice = 10;
	
	public int getVoice(){
		return this.voice;
	}
	public void say(){
		System.out.println("I'm saying..." + this.getVoice());
	}
}

//抽象装饰类
abstract class Decorate implements Say{
	//对抽象组件的引用
	protected Say s;
	public Decorate(Say say){
		this.s = say;
	}
	public void say(){
		System.out.print("I'm saying...");
		this.s.say();
	}
}
//具体装饰类
class Louder extends Decorate{
	public Louder(Say s){
		super(s);
	}
	
	public void say(){
		System.out.print("I'm louding...");
		super.s.say();
	}
}

result
res

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!