我正在学习编程模式,在我们最后的作业中,我们被要求建立一个“在线商店”。
我在考虑如何建模User,既可以是Admin,也可以是Customer。
我考虑了策略模式,用它们的特定行为来建模每个单独的User。
到目前为止,他们没有任何共同的行为,所以Admin不能addToCart,Customer不能registerNewProduct。
然而,随着系统的发展,可以共享行为/方法!
此外,User不会在运行时更改它的类型。也就是说,一旦你以客户身份登录,你就不能作为管理员重新登录。
即使他们共享行为,如seeProductList,这可以通过良好的继承实现,对吗?
我应该使用策略、继承还是您会推荐另一种模式?
如果您需要更多的信息,请告诉我!:)
提前谢谢。
发布于 2018-07-30 06:09:22
我想你已经进入了puzzle of patterns。
实际上,没有明显的理由在这里使用Strategy。让我们首先看看Strategy最突出的特性是什么。
策略是一种行为设计模式,它允许您定义一系列算法,封装每个算法,并使它们成为interchangeable.。策略允许算法独立于使用它的客户端。
在我看来,如果您想使用不同的methods/algorithms来解决相同的问题,您可以使用Strategy。
演示将是parse(File file),并且有几种方法可以为不同的场景解析文件。
战略- 1:
parseInParallel(File file) // when in single-user system;战略- 2:
parseSequatially(File file) // multi-user system;你看,他们正在达到相同的目标,但使用不同的方法。
在您的例子中,我想推荐inheritance,因为客户和管理人员之间有许多共同的特性,其中可能包括:
但是正如你已经提到的,很多方法是不同的。因此,您可以在subclass中分别添加它们,这样基本上就有了Person、Customer和Admin。
Person具有最基本的信息和方法,Customer具有与客户和Admin类似的方法和新领域。
https://stackoverflow.com/questions/51585012
复制相似问题