【问题标题】:java factory and observer patternjava工厂模式和观察者模式
【发布时间】:2015-10-05 13:16:09
【问题描述】:

我必须为学校创建一个应用程序,我必须同时使用工厂模式和观察者模式。我很难理解我的哪个文件应该是观察者,哪个应该是可观察的。

我有一个名为 Shoe 的类,并为不同类型的鞋子提供了具体的类,它们都扩展了我的 Shoe 类。我也有一个鞋厂。我已经为应该在商店中的鞋子数量分配了一个 int,并且我已经为现在的数量生成了随机数。我希望观察者模拟一段时间内售出的鞋子(类型)的数量。

我在理解观察者时遇到了一些困难,可能是我的逻辑不正确并且观察者没有用于此目的,如果是这种情况,请告诉我,因为我完全迷路了。

【问题讨论】:

  • 可能有一个类 ShoeStore,其对象由 ShoeFactory 观察:每当售出 x 类型的鞋时,工厂就可以补货。
  • 啊,我不知道该怎么感谢你!那是为我做的!

标签: java oop design-patterns observer-pattern factory-pattern


【解决方案1】:

听起来像Shoe 子类代表它们所代表的鞋子的库存。

所以 ShowFactory 是 observer,它正在观察鞋子。所以Shoe 类是可观察的。

当鞋子售出或添加到商店时,您调整 int 值。观察者注意到变化并在需要时对其采取行动。例如,如果给定鞋子的库存低于某个水平。

【讨论】:

    【解决方案2】:

    你知道如何创建一个抽象类以及如何扩展这个类。

    如果没有,您可以使用以下帮助: http://www.tutorialspoint.com/design_pattern/observer_pattern.htm

    当您拥有抽象类和扩展类时,很容易为它创建工厂。

    一个例子是在这个链接中找到:http://www.tutorialspoint.com/design_pattern/factory_pattern.htm

    为你的例子。 你有一个类'Shoe',你得到了例如 SmallShoe、MediumShoe 和 LargeShoe。 现在,如果你创建一个工厂,你会创建一个名为“ShoeFactory”的新类并给它一个方法:

    public Shoe makeShoe(int shoeSize)
    

    你现在可以像这样实现它:

    public class ShoeFactory {
      public static final int SMALL = 1;
      public static final int MEDIUM = 2;
      public static final int LARGE = 3;
    
      public Shoe makeShoe(int shoeSize) {
        switch(shoeSize) {
          case SMALL:
            return new SmallShoe();
          case MEDIUM:
            return new MediumShoe();
          case LARGE:
            return new LargeShoe();
        }
        return null;
      }
    
    }
    

    // 主类

    public static void main(String[] args) {
      ShoeFactory factory = new ShoeFactory();
      Shoe shoe = factory.makeShoe(ShoeFactory.SMALL);
    }
    

    【讨论】:

    • 我想知道为什么您的答案只涵盖工厂,但包含一个随机链接,指向有关观察者的教程。
    • 他询问了观察者和工厂模式。这就是为什么
    • 关于观察者模式(两次)的链接确实不适合您的其余答案。
    • 抱歉。没看到发了两次。复制过去的操作有问题。
    猜你喜欢
    • 2016-06-22
    • 2012-02-15
    • 2012-12-29
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多