对象层次结构

时间:2012-04-04 07:34:40

标签: java object hierarchy

零售店的正确型号是什么?例如公司从商店销售产品。

一家公司可以拥有许多商店并销售许多产品。这些产品不一定与每家商店挂钩,或者我认为。

我有一个基本的任务,要求我设计一个计算产品经济订货量的系统。我们应该实现一个适合以后赋值的结构(我们没有详细信息......),建议的结构如下:

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的所有了解。通过层次结构传递数据的方法 - 在对象之间复制参数?我错过了什么?

1 个答案:

答案 0 :(得分:2)

你担心通过从上到下传入所有参数初始化对象层次结构是不正常的。

您的讲师可能暗示您在复合模式的行中实现某些内容,即层次结构中的每个类共享一个通用方法(例如getValue())。在Product(即叶节点)的情况下,这将仅返回产品的值,而在StoreCompany的情况下,它将迭代成分{{1} } s(或Product s),调用Store并对结果求和。

这与你上面写的内容之间的主要区别在于,您通常会通过其构造函数单独初始化每个getValue(),而不是通过传递来自另一个对象的数据。如果产品是不可变的,您可以选择将其字段标记为Product。然后,您可以选择将实用程序方法添加到层次结构中的其他类(例如final);换句话说,其他类将表现出行为,而不仅仅是“数据容器”。

示例

moveProduct(Store store1, Store store1)