Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 继承与战略模式_Java_Inheritance_Design Patterns_Polymorphism_Strategy Pattern - Fatal编程技术网

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;