【发布时间】:2018-06-30 02:05:32
【问题描述】:
请有人能帮助我理解我打算如何使用工厂方法模式来创建类 B 的新(继承)版本,然后用新方法覆盖一个方法,然后返回一个实例A 类的。(但可能还有一些其他不相关的东西)。
不要求任何人为我做这件事,如果有人能引导我朝着正确的方向前进,我会很高兴,因为我知道我能做到,但是找到那个开始的地方是个问题,而且截止日期非常接近,所以每一点有帮助。
解释->
我们正在修改的程序是使用 guis 与商店有关的预制程序。我们的任务是修改和改进它。最初的任务是将重复的产品项合并为多个产品的单个请求;即当前在控制台中像这样输出;
0003 Toaster ( 1) £ 19.99
0003 Toaster ( 1) £ 19.99
但应该看起来像;
0003 Toaster ( 2) £ 38.98
问题是这必须通过使用继承来完成,而整个程序中有大量的类。
我们的第一个任务是修改扩展 A 类的 B 类。(它还说我们必须创建 B 类的新实例而不是 A 类)。我们应该通过使用工厂方法模式来创建一个新的(继承的)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 );
}
}
对不起,如果这令人困惑或不允许,现在真的很想得到一些帮助,谢谢 :) (编辑格式 - 抱歉)
【问题讨论】:
-
你能把代码格式化成代码吗?
-
尽我所能去格式化
-
TL;DR 需要修改名为 BetterBasket 的类,该类扩展了类篮子,以便它覆盖特定方法,基本上是一个更好的篮子。但是使用工厂方法模式,需要将其与CashierModel类联系起来,使其创建一个BetterBasket的Instance,而不是原来的Basket
标签: java eclipse inheritance bluej factory-method