5.装饰模式

1.装饰模式说明

目的:动态的给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更灵活。该模式以对客户端透明的方式扩展对象的功能。

使用环境:

(1)在不影响其他对象的情况下,以动态,透明的方式给单个对象添加职责。

(2)处理那些可以撤销的职责。

(3)当不能采用生成子类方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种

组合模式产生大量的子类,是的子类数目爆炸性增长。另一种情况是因为类定义被隐藏,或类定义不能用于生成子类。

2.装饰模式的结构

3.简单代码实现:不同的学生本身固有的技能,然后参加培训后就获取新的技能

1.抽象的学生类

/*
 * 抽象学生
 */
public abstract class AbstractStudent {
  
	//学生技能
	public abstract void skills();
}

2.具体的专业学生

/*
 * 魔术专业学生
 */
public class MgicStudent extends AbstractStudent{

	@Override
	public void skills() {
		System.out.println("来个吧啦魔术变身");	
	}
}

3.培训机构抽象类

/*
 * 伊藤培训
 */
public abstract class Etime extends AbstractStudent{
  private AbstractStudent student;
    @Override
	public void skills() {
		student.skills();	
	}
	public Etime(AbstractStudent student) {
		this.student =student;	
	}
}

4.培训机构下的java班

/*
 * java培训班
 */
public class JavaClass extends Etime{

	public JavaClass(AbstractStudent student) {
		super(student);
		
	}
	@Override
	public void skills() {
		super.skills();
		javaskills();
	}
	/*
	 * java班所学会的技能
	 */
	public void javaskills() {
		System.out.println("我会helloworld了");
		
	}
}

5.测试类

public class Test {

	public static void main(String[] args) {
		AbstractStudent student1 = new MgicStudent();
        Etime e =new JavaClass(student1);
        e.skills();;
	}

}

谢谢查看,初次写有不好的地方请留言。勿喷!,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值