gpt4 book ai didi

java - 装饰器模式在 Java 中如何工作?

转载 作者:行者123 更新时间:2023-12-01 13:56:03 26 4
gpt4 key购买 nike

我试图理解装饰模式。下面是我试图理解它是如何工作的代码。

public static void main(String[] args)
{
Room myRoom = new CurtainDecorator(new ColorDecorator(new SimpleRoom()));
System.out.println(myRoom.showRoom());

}

下面是我的具体类(class)

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

我的问题已放在评论中..

最佳答案

最后你有:CurtainDecorator(ref=ColorDecorator(ref=SimpleRoom)))

当您从 main 调用 showRoom 时,它会调用 CurtainDecorator 的方法,该方法首先转到输出“蓝色”的引用(本例中为 ColorDecorator),然后 CurtainDecorator 添加它的位“Curtain”。

关于java - 装饰器模式在 Java 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19620838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com