javase IO装饰类

IO常用类体系

装饰者模式:动态的给对象添加一些额外的职责,就增加功能而言,Decorator模式相比生成子类更为灵活,该模式以对客户端透明的方式拓展对象的功能,适用环境:在不影响其他对象的情况下,以动态、透明的方式给单个对象添加一些职责,处理那些可以册小的职责。当不能采用生成类的方法进行扩充是,一种情况是有大量独立的拓展,为支持每一种组合将产生大量的子类,使子类数目呈爆炸性增长。另一种是类定义被隐藏,或类定义不能用于生成子类。

装饰者模式有四种角色:被装饰者对象基类Compont,具体被装饰对象ConcreteComponent,装饰者抽象类Decorator,工具装饰者ConcreteDecorator

 case:设计一个自动计算豆浆加料的结账系统:

package com.lx21;
//纯豆浆
public class SoyabBeanMilk implements drink{

	@Override
	public float cost() {
		// TODO Auto-generated method stub
		return 5f;
	}

	@Override
	public String description() {
		// TODO Auto-generated method stub
		return "纯豆浆";
	}
	
	
}
//加糖修饰

package com.lx21;
public class SugarDecorator extends Decorator{
	public SugarDecorator(drink drink) {
		super(drink);
	}
	public float cost() {
		return super.cost()+1f;
	}
	public String description() {
		return super.description()+"加糖";
		
	}
}
//加蛋修饰
package com.lx21;
public class EggDecorator extends Decorator{
	public EggDecorator(drink drink) {
		super(drink);
	}
	public float cost() {
		return super.cost()+2f;
	}
	public String description() {
		return super.description()+"加鸡蛋";
		
	}
}
//加豆修饰
package com.lx21;
public class BeanDecorator extends Decorator{
	public BeanDecorator(drink drink) {
		super(drink);
	}
	public float cost() {
		return super.cost()+1f;
	}
	public String description() {
		return super.description()+"加豆";
		
	}
}
//主程序
package com.lx21;

public class drinktest {
	public static void main(String[] args) {
		drink drink = new SoyabBeanMilk();
		SugarDecorator surgar =new SugarDecorator(drink);
		BeanDecorator bean = new BeanDecorator(surgar);
		EggDecorator egg = new EggDecorator(bean);
		System.out.println("您点的豆浆套餐是:"+egg.description()+",一共花费"+egg.cost()+"rmb");
	}
}


 装饰者模式的应用场景为不改变原来类结构的基础上,新增或者限制或者改造功能。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值