decorate

package decorate;

public interface People
{
public void eat();
}


package decorate;

public class Girl implements People {

public void eat() {
System.out.println("吃点小米饭!");
}

}




package decorate;

public class PeopleDecorate implements People
{
private  People people;
public PeopleDecorate(People people)
{
this.people = people;
}
public void eat()
{
this.before();//添加新功能
people.eat();
this.after();//添加新功能
}
public void before()
{
System.out.println("洗手!");
}
public void after()
{
System.out.println("洗碗,整理卫生!");
}
}



package decorate;

public class Test
{
public static void main(String[] args)
{
People g = new PeopleDecorate(new Girl());
g.eat();
}
}
/*
* 装饰模式主要是用来扩张一个类的功能的,在不修改这个类的情况下进行功能的添加
* 其实所有的设计模式基本就是为了去满足开发中一些原则,这里主要是开闭原则,面向接口
* 编程。
* 这里的girl要吃饭,如果要加上其他功能,不用模式的话就得去修改接口,在里面添加before,
* after等方法,这里就不利于维护与功能的扩展。
*
*/

你可能感兴趣的:(decorate)