设计模式:装饰模式

 

JAVA 的IO模块如果不使用装饰模式,会需要更多的IO类,如带缓冲的并能读取基本类型的类、读取字节数组的缓冲类等等。

 

package com.test.decrator;

//抽象构件角色
public interface Component {
	public void dosometing();
}

 

package com.test.decrator;

//具体构件角色
public class ConcreteComponent implements Component {

	public void dosometing() {
		System.out.println("功能A");
	}

}

 

package com.test.decrator;

//装饰角色
public class Decorator implements Component {

	private Component component;
	
	public Decorator(Component component){
		this.component = component;
	}
	public void dosometing() {
		component.dosometing();
	}

}

 

package com.test.decrator;

//具体装饰角色1
public class ConcreteDecorator1 extends Decorator {

	public ConcreteDecorator1(Component component) {
		super(component);
	}
	
	public void dosometing() {
		super.dosometing();
		this.doAnotherthing();
	}
	
	private void doAnotherthing(){
		System.out.println("功能B");
	}
}

 

package com.test.decrator;

//具体装饰角色2
public class ConcreteDecorator2 extends Decorator {
	public ConcreteDecorator2(Component component) {
		super(component);
	}

	public void dosometing() {
		super.dosometing();
		this.doAnotherthing();
	}

	private void doAnotherthing() {
		System.out.println("功能C");
	}
}

 

package com.test.decrator;

public class Client {
	public static void main(String[] args) {
		//节点流
		Component component = new ConcreteComponent();
		//过滤流
		Component component2 =new ConcreteDecorator1(component);
		//过滤流
		Component component3 =new ConcreteDecorator2(component2);
		
		component3.dosometing();
	}
}

 

 

打印出

功能A
功能B
功能C

 

学IO最重要的是深刻理解装饰模式!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值