什么样的图案设计适用?

时间:2015-06-11 18:32:05

标签: oop design-patterns uml

这句话问我应用了什么样的设计模式,首先,告诉我要制作玩具的内容,因为它们只有3种类型的游戏,而且没有任何相关的例如某种颜色,会应用工厂方法。

但除此之外,它告诉我玩具可以关闭和打开,这让我觉得这将是一个命令模式(或状态)。

我可以在最终解决方案中混合使用2种模式吗?

  

我们想要建造3种玩具:口袋妖怪,芭比娃娃和超人。它们具有与其关闭和打开相关的动画操作,这些操作对于每种类型的玩具都是不同的。解释什么样的设计模式,并使用类图执行最终设计。

感谢

2 个答案:

答案 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;)

抽象工厂将自己创建工厂。例如,您可以拥有一个抽象工厂,为男孩专用玩具创建工厂,或者为女孩专用玩具创建工厂。然后每个工厂都会制作侍酒,小宠物和/或超人。