零售店的正确型号是什么?例如公司从商店销售产品。
一家公司可以拥有许多商店并销售许多产品。这些产品不一定与每家商店挂钩,或者我认为。
我有一个基本的任务,要求我设计一个计算产品经济订货量的系统。我们应该实现一个适合以后赋值的结构(我们没有详细信息......),建议的结构如下:
public class Company {
private Store store;
public static void main(String[] args)
{
Store storeOne = new Store();
storeOne.setEOQRelevantValues(1, etc..);
}
}
public class Store {
private Product product;
//..
public setEOQRelevantValues(int eoqRelevantValues)
{
Product.setEOQRelevantValues(eoqRelevantValues);
}
}
public class Product{
private int eoqRelevantValues;
//..
public setEOQRelevantValues(int eoqRelevantValues)
{
this.eoqRelevantValues = eoqRelevantValues;
}
public int calculateEOQ()
{
//do stuff with this.eoqRelevantValues..
return EOQ;
}
}
这似乎违反了我对OOP的所有了解。通过层次结构传递数据的方法 - 在对象之间复制参数?我错过了什么?
答案 0 :(得分:2)
你担心通过从上到下传入所有参数初始化对象层次结构是不正常的。
您的讲师可能暗示您在复合模式的行中实现某些内容,即层次结构中的每个类共享一个通用方法(例如getValue()
)。在Product
(即叶节点)的情况下,这将仅返回产品的值,而在Store
或Company
的情况下,它将迭代成分{{1} } s(或Product
s),调用Store
并对结果求和。
这与你上面写的内容之间的主要区别在于,您通常会通过其构造函数单独初始化每个getValue()
,而不是通过传递来自另一个对象的数据。如果产品是不可变的,您可以选择将其字段标记为Product
。然后,您可以选择将实用程序方法添加到层次结构中的其他类(例如final
);换句话说,其他类将表现出行为,而不仅仅是“数据容器”。
示例强>
moveProduct(Store store1, Store store1)