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();



}

}

你可能感兴趣的:(设计模式)