2

这是我一直在问自己的一个问题,所以我决定在这里问你们。

假设我有一个Shop-object,其中包含一个ProductList-object 作为实例变量。my Shop-object 的核心功能当然是能够添加Product.

将产品添加到商店的公共界面应该是什么样的?

shop.AddProduct(product)

或者

shop.Products.Add(product)?

感谢您的想法和帮助。

4

1 回答 1

3

这确实是一个关于是否将 Products 作为属性公开,或者是否使用方法的问题。并且已经有很多关于这个的问题。例如:

属性与方法

在大多数情况下,当它们不是容器对象的功能部分时,我个人更喜欢属性。我的意思是,产品不是商店不可分割的一部分。商店仍然是商店,即使它没有产品。

产品只是存在于商店中的物品。因此,它们作为收藏品非常有意义。尽管我可能会有一个 Inventory 属性,其中 Products 是该库存的属性。

无论如何,方法在做某事时往往更有意义。不只是包含一些东西。例如store.PurchaseProduct(product),会从产品集合中删除项目,但它也会做一些事情(向收银台添加资金,进行库存管理等)。

使用方法的另一个原因是当您在操作集合时需要做几件事情时。例如,假设您不希望在不确保钱进入收银台或记录破损的情况下从产品中移除物品。然后,我仍然会使用一个属性,但我会将该属性设为私有,并且只能通过执行操作的方法来访问它。

然而,这在很大程度上是一个哲学论证。无论哪种方式,人们都会有意见。重要的是你自己的意见。

于 2013-03-25T23:39:06.670 回答