抽象类
abstract class Component {
abstract void display();
}
被装饰物
public class House extends Component {
private static final String TAG = House.class.getName();
@Override
void display() {
Log.e(TAG, "display: 创建一个房子");
}
}
装饰类
public class Decorate extends Component {
private Component mComponent;
public Decorate(Component component) {
mComponent = component;
}
@Override
void display() {
mComponent.display();
}
}
桌子装饰
public class DeskDecorate extends Decorate {
private static final String TAG = DeskDecorate.class.getName();
public DeskDecorate(Component component) {
super(component);
}
@Override
void display() {
Log.e(TAG, "display: 增加桌子进行装饰");
super.display();
}
}
鲜花装饰
public class FlowerDecorate extends Decorate {
private static final String TAG = FlowerDecorate.class.getName();
public FlowerDecorate(Component component) {
super(component);
}
@Override
void display() {
Log.e(TAG, "display: 装饰一个花");
super.display();
}
}
灯装饰
"public class LampDecorate extends Decorate {
private static final String TAG = LampDecorate.class.getName();
public LampDecorate(Component component) {
super(component);
}
@Override
void display() {
Log.e(TAG, ""display: 增加一盏灯"");
super.display();
}
}"
调用测试类
public class TestDecorate {
public void testDecorateClick(View view) {
House house = new House();
DeskDecorate deskDecorate = new DeskDecorate(house);
FlowerDecorate flowerDecorate = new FlowerDecorate(deskDecorate);
LampDecorate lampDecorate = new LampDecorate(flowerDecorate);
lampDecorate.display();
}
}