装饰者模式:
有一基础类,然后另一个类的构造器中调用该类,这样另一个类就有该类的功能了,就像饮料一样,在原有水的基础上不断添加新的材料,这样饮料就不断地增加功能。
先创加一个接口:
public interface Drink {
void drinking();
}
在创建一个基础类:
public class Water implements Drink{
@Override
public void drinking() {
// TODO Auto-generated method stub
System.out.println("解渴");
}
}
在创建一个饮料的抽象类
public abstract class Beverage implements Drink{
private Drink d;
public Beverage(Drink d) {
// TODO Auto-generated constructor stub
super();
this.d=d;
}
@Override
public void drinking() {
// TODO Auto-generated method stub
d.drinking();
getMoreFunction();
}
public abstract void getMoreFunction();
}
添加饮料抽象类的继承类:
1.牛奶:
public class Milk extends Beverage{
public Milk(Drink d) {
// TODO Auto-generated constructor stub
super(d);
}
@Override
public void getMoreFunction() {
// TODO Auto-generated method stub
System.out.println("增加营养");
}
}
2:茶
public class Tea extends Beverage {
public Tea(Drink d) {
super(d);
// TODO Auto-generated constructor stub
}
@Override
public void getMoreFunction() {
// TODO Auto-generated method stub
System.out.println("养胃");
}
}
最后实例化对象:
public class TestDecoratorModel {
public static void main(String[] args) {
Water w=new Water();
Milk m=new Milk(w);
Tea t=new Tea(m);
t.drinking();
}
}
最后得到的茶的功能就具备水和牛奶的功能。