繁体   English   中英

Java工厂方法模式

[英]Java Factory Method Pattern

请有人能够帮助我了解如何使用工厂方法模式创建类B的新(继承)版本,然后用新方法覆盖方法,该新方法然后返回类A的实例。 (可能还有其他一些无关紧要的东西)。

不要求任何人为我做这件事,真的会很乐意,是否有人可以按照我知道的正确方向将我引向正确的方向,但找到起点就是问题所在,而且截止日期也很近,所以每件事都有帮助。

说明->

我们正在修改的程序是使用guis与商店预先制作的。 我们的任务是对其进行修改和改进。 最初的任务是将重复的产品项合并为对多个产品的单个请求。 即当前在控制台中的输出是这样的;

0003 Toaster ( 1) £ 19.99

0003 Toaster ( 1) £ 19.99

但应该看起来像;

0003 Toaster ( 2) £ 38.98

问题是必须通过使用继承来完成,并且整个程序中都有大量的类。

我们的第一个任务是修改扩展了A类的B类(它还说我们将不得不创建B类而不是A类的新实例)。 为此,我们应该使用Factory Method Pattern创建一个新的(继承的)类C版本,该版本使用新方法覆盖方法“ makeBasket”,然后返回一个新的类B实例。所有这些都无需实际更改其中的任何代码。 C级

我认为代码应该看起来像这样;

public class BetterCashierModel extends CashierModel {
@Override
protected Basket makeBasket()
{
return new BetterBasket();
}
}

但是,我真的不确定,也不知道我打算将该代码放入哪个类。工作的措辞方式意味着它应该能够适合B类某个地方,但我真的无法解决。

这是我们被要求为此特定任务编辑的课程

评论的内容是我添加的内容,目的是为了能够告诉您已经给我的内容。

package catalogue;

import java.io.Serializable;
import java.util.Collections;

 public class BetterBasket extends Basket implements Serializable
{
  private static final long serialVersionUID = 1L;


  // This is where I need to override the method 'add' in the class 'Basket'.
  // as well as create the newBasket i previously mentioned i suspect#

  // @Override
  // public boolean add( Product pr)
  // {
  // return super.add( pr ); 
}
}

对不起,如果这令人困惑或不被允许,那么现在真的会很喜欢一些帮助,谢谢:)(编辑格式-对不起)

我认为您只需要使用一种逻辑来覆盖BetterBasket类中的add ,该逻辑将首先检查输入的Product是否已存储,您可能应该使用Basket的受保护API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM