/**
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();
}
}