java中装饰者模式的事例(源码)

/**
1. AbstractPerson 抽象类 人类
2.
3. */
public abstract class AbstractPerson {
String name;
public abstract void eat();
}

列表内容

/**
* 超人
*
* 装饰类
*
*/
public class StrongPerson /extends AbstractPerson(可写可不写)/{

AbstractPerson person;//组合

public StrongPerson(AbstractPerson person) {
    super();
    this.person = person;
}
/**
 * 超人吃
 */
public void eat() {
    System.out.println("喝一口");
    person.eat();
    System.out.println("抽一口");
    System.out.println("眯一会");
    System.out.println("敲会java代码");

}

}

public class Student extends AbstractPerson{

@Override
public void eat() {
    System.out.println(name+"同学吃东西......");
}

}

public class Teacher extends AbstractPerson{

@Override
public void eat() {
    System.out.println(name+"老师吃东西....");
}

}

import java.io.BufferedInputStream;
/**
* @author lenovo
*装饰者模式就是再创一个类来加强主类的功能,这样的话就不用为每个子类创建子类来加强那个子类;
*具体方法就是在新创的类中,声明一个主类,就像声明成员变量那样(主类名 变量名),然后重写新类的构造方法,
*构造方法中将参数类型设置为主类的类型,然后写要加强的方法。调用时就直接调用新类并创建对象,然后调用新类的方法
*就能实现加强的目的。
*
*/
public class Test {
public static void main(String[] args) {
Student zhangsan=new Student();
zhangsan.name=”张三”;
//zhangsan.eat();

    Teacher bobo=new Teacher();
    bobo.name="波波";
    //bobo.eat();

    StrongPerson strongPerson1=new StrongPerson(zhangsan);
    StrongPerson strongPerson2=new StrongPerson(bobo);
    strongPerson1.eat();
    strongPerson2.eat();



}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值