1.定义一个接口类IHouse,接口方法toLive
2.定义一个实现类HouseImpl,实现IHouse接口重写toLive方法.
3.定义抽象装饰类IHouseDecorate,实现IHouse接口,重写toLive方法.构造方法带参数接口类IHouse。
4.定义一个装饰类LargeBuilding,继承IHouseDecorate,并重写toLive方法
5.定义一个装饰类Restaurant,继承IHouseDecorate,并重写toLive方法
6.测试
父子类(接口,实现)关系
IHouse
——HouseImpl (implements IHouse{)
——IHouseDecorate(abstract类 implements IHouse{)
——————LargeBuilding(extends IHouseDecorate )
——————Restaurant(extends IHouseDecorate )
1.定义一个接口类IHouse,接口方法toLive
//房子接口
public interface IHouse {
public abstract void toLive();
}
2.定义一个实现类HouseImpl,实现IHouse接口重写toLive方法.
//实现房子接口,实现房子的住人方法
public class HouseImpl implements IHouse{
public void toLive() {
System.out.println("房子可以住人");
}
}
3.定义抽象装饰类IHouseDecorate,实现IHouse接口,重写toLive方法.构造方法带参数接口类IHouse
//房子装饰类
public abstract class IHouseDecorate implements IHouse {
private IHouse iHouse;
public IHouseDecorate(IHouse iHouse) {
this.iHouse = iHouse;
}
@Override
public void toLive() {
this.iHouse.toLive();
}
}
4.定义一个装饰类LargeBuilding,继承IHouseDecorate,并重写toLive方法
//大厦
public class LargeBuilding extends IHouseDecorate{
public LargeBuilding(IHouse iHouse) {
super(iHouse);
// TODO Auto-generated constructor stub
}
@Override
public void toLive() {
super.toLive();
System.out.println("大厦还可以办公");
}
}
5.定义一个装饰类Restaurant,继承IHouseDecorate,并重写toLive方法
//餐厅
public class Restaurant extends IHouseDecorate{
public Restaurant(IHouse iHouse) {
super(iHouse);
// TODO Auto-generated constructor stub
}
@Override
public void toLive() {
System.out.println("餐厅还可以吃饭");
super.toLive();
}
}
测试:
public static void main(String[] args) {
System.out.println("-----房子基本功能住人-------");
IHouse ih = new HouseImpl();
ih.toLive();
System.out.println("-----先吃饭,在住人-------");
IHouseDecorate iHouseDecorate = new Restaurant(ih);
iHouseDecorate.toLive();
System.out.println("-----住人后,再办公-------");
iHouseDecorate = new LargeBuilding(ih);
iHouseDecorate.toLive();
System.out.println("----先吃饭,在住人,再办公--------");
iHouseDecorate = new Restaurant(new LargeBuilding(ih));
iHouseDecorate.toLive();
}
输出:
-----房子基本功能住人-------
房子可以住人
-----先吃饭,在住人-------
餐厅还可以吃饭
房子可以住人
-----住人后,再办公-------
房子可以住人
大厦还可以办公
----先吃饭,在住人,再办公--------
餐厅还可以吃饭
房子可以住人
大厦还可以办公