我试图理解装饰器模式。下面是我试图理解它是如何工作的代码。
public static void main(String[] args)
{
Room myRoom = new CurtainDecorator(new ColorDecorator(new SimpleRoom()));
System.out.println(myRoom.showRoom());
}
下面是我的具体课程
public class SimpleRoom implements Room{
@Override
public String showRoom()
{
return "show room";
}
}
下面是我的抽象装饰器类
public abstract class RoomDecorator implements Room{
public Room roomReference;
@Override
public String showRoom()
{
return roomReference.showRoom();
}
}
下面是我的装饰器实现1
public class ColorDecorator extends RoomDecorator{
@Override
public String showRoom()
{
return addColors(); //How does showRoom() method gets invoked here?
}
public ColorDecorator(Room room)
{
this.roomReference = room;
}
public String addColors()
{
return "Blue";
}
}
下面是我的装饰器实现 2
public class CurtainDecorator extends RoomDecorator{
public CurtainDecorator(Room room)
{
this.roomReference = room;
}
@Override
public String showRoom()
{
return this.roomReference.showRoom() + addCurtains(); //What will showRoom method invoke?
}
public String addCurtains()
{
return "Curtain";
}
}
输出是 - BlueCurtain
我的问题放在评论中..