【问题标题】:Which OOP approach to choose? [closed]选择哪种 OOP 方法? [关闭]
【发布时间】:2019-09-11 13:31:03
【问题描述】:

有实体作为文章。用户可以add/edit它。

EditAdd 表单相似,因此对它们的验证是相同的。

当用户提交表单时,它应该选择策略,做什么:addupdate

选择哪种 OOP 方法?

策略模式?

现在看起来:

if(this.dialogAction === "add") {
  // LOGIC ADD
}

if(this.dialogAction === "edit") {
 // LOGIC EDIT
}

我应该创建两个类AddClassEditClassValidationClass

他们都使用ValidationClass

仅在操作之间存在差异。

Action add 使用服务:service.add(); 编辑操作使用服务中的方法:service.edit()

【问题讨论】:

    标签: typescript oop


    【解决方案1】:

    我认为您不需要策略模式。您的算法定义明确,包含两个步骤:验证 (1) 和操作执行 (2)。

    algorithm() {
        validate();
        action.execute();
    }
    

    action 可能是 command 并且会有 AddCommandEditCommand。当用户提交表单时,你让算法知道使用什么命令。

    【讨论】:

    • 这个action.execute(); 也调用了不同的方法,但是来自一个服务
    • @OPV 您会收到一个完全构建的Action,其所有依赖项都已设置/注入。你不在乎这个action 到底要做什么。它不依赖上下文,但可以通过execute 方法获取参数。
    • @OPV 我不明白为什么会出现问题...
    猜你喜欢
    • 2012-04-17
    • 2021-08-18
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2012-05-06
    • 1970-01-01
    • 2011-11-11
    相关资源
    最近更新 更多