java工厂和观察者模式

时间:2015-10-05 13:16:09

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

我必须为学校创建一个应用程序,我必须使用工厂模式和观察者模式。我在理解哪个文件应该是观察者以及哪个文件应该是可观察的时候遇到了一些困难。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

您知道如何创建抽象类以及如何扩展此类。

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

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

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

为您的例子。 哟得到了一个班级'鞋',你有例如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);
}