Java 继承与战略模式
我正在学习编程模式,在我们的最终任务中,我们被要求建立一个“在线商店” 我在考虑如何建模Java 继承与战略模式,java,inheritance,design-patterns,polymorphism,strategy-pattern,Java,Inheritance,Design Patterns,Polymorphism,Strategy Pattern,我正在学习编程模式,在我们的最终任务中,我们被要求建立一个“在线商店” 我在考虑如何建模用户,它可以是管理员或客户 我考虑了一种策略模式,用每个用户的特定行为来建模 到目前为止,他们没有共享任何行为,因此管理员不能添加到art和客户不能注册wproduct 但是,随着系统的发展,他们可以共享行为/方法 此外,用户在运行时不会更改其类型。即,一旦您以客户身份登录,就不能以管理员身份重新登录 即使他们共享行为,例如seeProductList,这也可以通过良好的ol'继承来实现,对吗 我应该使用策略
用户
,它可以是管理员
或客户
我考虑了一种策略模式,用每个用户的特定行为来建模
到目前为止,他们没有共享任何行为,因此管理员不能添加到art
和客户不能注册wproduct
但是,随着系统的发展,他们可以共享行为/方法强>
此外,用户
在运行时不会更改其类型。即,一旦您以客户身份登录,就不能以管理员身份重新登录
即使他们共享行为,例如seeProductList
,这也可以通过良好的ol'继承来实现,对吗
我应该使用策略、继承还是推荐其他模式
如果您需要更多信息,请告诉我!:)
提前谢谢。我想你已经陷入了模式的难题
实际上,这里没有明显的理由使用策略。让我们先看看最突出的功能是什么
Strategy是一种行为设计模式,它允许您定义一系列算法,封装每一个算法,并使它们可以互换。策略允许算法独立于使用它的客户端而变化
在我看来,如果你想使用不同的方法/算法来解决同一个问题,你会使用策略
演示将是parse(File File)
,有几种方法可以针对不同的场景解析文件
战略-1:
战略2:
你看,他们实现了相同的目标,但使用了不同的方法
在您的情况下,我想推荐继承
,因为客户和管理员之间有很多共同的功能,其中可能包括:
姓名李>
年龄李>
电子邮件李>
性别/性别李>
地址李>
电话李>
还有更多与人有关的
但是正如你已经提到的,很多方法是不同的。因此,您可以将它们分别添加到子类中
,这样基本上您将拥有个人
、客户
和管理员
Person
拥有最基本的信息和方法,Customer
拥有与客户和Admin
相关的方法和新字段 我想你已经陷入了模式的难题中
实际上,这里没有明显的理由使用策略。让我们先看看最突出的功能是什么
Strategy是一种行为设计模式,它允许您定义一系列算法,封装每一个算法,并使它们可以互换。策略允许算法独立于使用它的客户端而变化
在我看来,如果你想使用不同的方法/算法来解决同一个问题,你会使用策略
演示将是parse(File File)
,有几种方法可以针对不同的场景解析文件
战略-1:
战略2:
你看,他们实现了相同的目标,但使用了不同的方法
在您的情况下,我想推荐继承
,因为客户和管理员之间有很多共同的功能,其中可能包括:
姓名李>
年龄李>
电子邮件李>
性别/性别李>
地址李>
电话李>
还有更多与人有关的
但是正如你已经提到的,很多方法是不同的。因此,您可以将它们分别添加到子类中
,这样基本上您将拥有个人
、客户
和管理员
Person
拥有最基本的信息和方法,Customer
拥有与客户和Admin
相关的方法和新字段
parseInParallel(File file) // when in single-user system;
parseSequatially(File file) // multi-user system;