这句话问我应用了什么样的设计模式,首先,告诉我要制作玩具的内容,因为它们只有3种类型的游戏,而且没有任何相关的例如某种颜色,会应用工厂方法。
但除此之外,它告诉我玩具可以关闭和打开,这让我觉得这将是一个命令模式(或状态)。
我可以在最终解决方案中混合使用2种模式吗?
我们想要建造3种玩具:口袋妖怪,芭比娃娃和超人。它们具有与其关闭和打开相关的动画操作,这些操作对于每种类型的玩具都是不同的。解释什么样的设计模式,并使用类图执行最终设计。
感谢
答案 0 :(得分:0)
您可以主要采用“抽象工厂模式”的方法。
这是你应该如何进行实施
声明一个界面ShowAnimation
public interface ShowAnimation{
public void onState();
public void offState();
}
然后在你的每个Pokemon,Barbie和Superman类中,你将简单地实现这个ShowAnimation接口,并根据你的业务逻辑覆盖onState和offState方法。 这样
public class Barbie implements ShowAnimation{
@override
public void onState(){
System.out.println("Show dance");
}
@override
public void offState(){
System.out.println("Do Namaste");
}
}
您将这个模式称为抽象工厂设计模式。
请点击此链接以获取更多参考 http://www.tutorialspoint.com/design_pattern/abstract_factory_pattern.htm
编辑1- 我想更新我的答案 "这是您将使用接口并实现接口的命令模式, 但是,您可以创建一个单独的抽象类Toys
abstract public class Toys {
provide some basic functionalities for this Toy class
}
并使其他具体类芭比扩展Toys并实现ShowAnimation
所以,基本上你可以混合使用'工厂模式'以及'命令模式'实现这一目标。
答案 1 :(得分:0)
您可以使用除ShowAnimation
接口之外的接口和实现akash89,其实现是策略模式。在策略模式中,您将拥有一个具有可互换实现的界面,在这种情况下是您的玩具。
状态模式假定在调用某个方法时对象的内部行为发生了变化。事实并非如此。
正常的工厂模式绰绰有余。你只需创建一个对象(在akash89的情况下)ShowAnimation
接口,你可以在其上调用on和off动画。 (但是我会将界面更改为IToy
,因为玩具工厂会创建玩具,而不是ShowAnimations;)
抽象工厂将自己创建工厂。例如,您可以拥有一个抽象工厂,为男孩专用玩具创建工厂,或者为女孩专用玩具创建工厂。然后每个工厂都会制作侍酒,小宠物和/或超人。