这是一个我已经问了自己很长时间的问题,所以我决定在这里问你们。
让我们假设我有一个Shop-object,它包含一个ProductList-object作为实例变量。当然,我的Shop-object的核心功能是添加Product。
向商店添加产品的公共界面应该是什么样子的?
shop.AddProduct(product)
或
shop.Products.Add(product)?
谢谢你的想法和帮助。
发布于 2013-03-25 23:39:06
这实际上是一个关于是否将产品公开为属性或是否使用方法的问题。关于这一点,已经有很多问题了。例如:
在大多数情况下,当属性不是容器对象的功能部分时,我个人更喜欢它们。我的意思是,产品不是商店不可分割的一部分。即使没有产品,商店仍然是一家商店。
产品只是生活在商店里的物品。因此,作为集合属性,它们是非常有意义的。虽然我可能有一个库存财产,其中的产品是一个财产的库存。
无论如何,方法在做某事时往往更有意义。不是简单地包含什么东西。例如,store.PurchaseProduct(product)将从产品集合中删除项目,但它也会做一些事情(向收银台增加资金,进行库存管理等)。
使用方法的另一个原因是在操作集合时需要做几件事。例如,假设您不希望从产品中移除对象,同时也不确保货币进入收银台,或记录损坏情况。然后,我仍然会使用属性,但我会将该属性设置为私有属性,并且只通过执行操作的方法访问该属性。
然而,这在很大程度上是一个哲学上的论点。无论哪种方式,人们都会有自己的看法。重要的是你自己的意见。
https://stackoverflow.com/questions/15626725
复制相似问题