首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >继承与策略模式

继承与策略模式
EN

Stack Overflow用户
提问于 2018-07-29 22:19:20
回答 1查看 256关注 0票数 0

我正在学习编程模式,在我们最后的作业中,我们被要求建立一个“在线商店”。

我在考虑如何建模User,既可以是Admin,也可以是Customer

我考虑了策略模式,用它们的特定行为来建模每个单独的User

到目前为止,他们没有任何共同的行为,所以Admin不能addToCartCustomer不能registerNewProduct

然而,随着系统的发展,可以共享行为/方法!

此外,User不会在运行时更改它的类型。也就是说,一旦你以客户身份登录,你就不能作为管理员重新登录。

即使他们共享行为,如seeProductList,这可以通过良好的继承实现,对吗?

我应该使用策略、继承还是您会推荐另一种模式?

如果您需要更多的信息,请告诉我!:)

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-07-30 06:09:22

我想你已经进入了puzzle of patterns

实际上,没有明显的理由在这里使用Strategy。让我们首先看看Strategy最突出的特性是什么。

策略是一种行为设计模式,它允许您定义一系列算法,封装每个算法,并使它们成为interchangeable.。策略允许算法独立于使用它的客户端。

在我看来,如果您想使用不同的methods/algorithms来解决相同的问题,您可以使用Strategy

演示将是parse(File file),并且有几种方法可以为不同的场景解析文件。

战略- 1:

代码语言:javascript
复制
parseInParallel(File file) // when in single-user system;

战略- 2:

代码语言:javascript
复制
parseSequatially(File file) // multi-user system;

你看,他们正在达到相同的目标,但使用不同的方法。

在您的例子中,我想推荐inheritance,因为客户和管理人员之间有许多共同的特性,其中可能包括:

  1. 姓名;
  2. 年龄;
  3. 电子邮件;
  4. 性别/性别;
  5. 地址;
  6. 电话;
  7. 还有更多与人有关的事。

但是正如你已经提到的,很多方法是不同的。因此,您可以在subclass中分别添加它们,这样基本上就有了PersonCustomerAdmin

Person具有最基本的信息和方法,Customer具有与客户和Admin类似的方法和新领域。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51585012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档