Java IO学习【10】装饰设计模式

本文通过一个具体的Java示例对比了装饰设计模式与继承在功能扩展上的差异。装饰模式提供了比继承更灵活的方式,避免了因不断扩展而造成的类继承体系臃肿。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        昨晚上很好的玩儿了一下,还一不小心因为不会办事儿得罪了人,哎。自己的情商有些太低了自己慢慢练吧。反正得罪就得罪了~~

<span style="font-size:18px;">public class PersonDemo {

	public static void main(String[] args) {
		
		Person p = new Person();
//		p.chifan();
		//不用重新建立一个类
		NewPerson p1 = new NewPerson(p);  //装饰思想
		p1.chifan();
		
		NewPerson2 p2 = new NewPerson2();
		p2.chifan();

	}
}
class Person{
	void chifan(){
		System.out.println("吃饭");
	}
}
//装饰,这个类的出现是为了对吃饭功能进行增强
class NewPerson{
	
	private Person p;
	NewPerson(Person p){  //构造函数的时候,将p加入
		this.p = p;
	}
	
	public void chifan(){
		System.out.println("开胃酒");
		p.chifan();
		System.out.println("甜点");
	}
}
//继承也可以实现这个功能,
class NewPerson2 extends Person{
	public void chifan(){
		System.out.println("开胃酒");
		super.chifan();
		System.out.println("甜点");
	}
}
/*装饰设计模式和继承都能实现一样的特定进行功能的扩展增强,那么两者有什么区别,哪个好点呢?
 *继承体系:
 *父类Writer: 
 *  |----文本TextWriter  媒体MediaWriter
 *想对操作的工作进行效率的提高。
 *按照面向对象,通过继承对具体的对象那个进行功能的扩展
 *效率提高就需要就如缓冲区技术
 *   |----文本TextWriter
 *   	|----BufferedTextWriter:加入了缓冲技术的操作文本的对象
 *   |----媒体MediaWriter
 *   	}----BufferedMediaWriter:加入了缓冲技术的操作媒体的对象
 *到这里可以了。  但是这样做好像不理想。
 *如果这个体系进行功能扩展,又多了流对象。这个流要提供效率,又必须产生子类。
 *这是就会发现,只是为提高功能进行的继承,导致继承体系越来越臃肿。
 *
 *装饰比继承灵活
 *特点:装饰类和被装饰类都必须所属同一接口或父类
 */
</span>


 

       好吧,我发现我的this的功能有忘了,下一节复习一下this。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值