返回

java链式创意OOP设计模式问题

发布时间:2022-08-30 09:53:17 306
# php

我正在创建一个负责验证配置的类。此类调用其他类,通过以链的形式创建新实例来验证所述配置。乍一看,代码结构看起来很糟糕,但它确实有效。无论如何,我认为这不是处理这种逻辑的最佳方式。

我在这里留下了 TypeScript 中代码的简化版本,但我也将其留在 Python 和 Java 中,仅供参考:

class Validator {
    private _notValidatedConfig: NotValidatedConfig

    constructor(notValidatedConfig: NotValidatedConfig) {
        this._notValidatedConfig = notValidatedConfig
    }

    validateConfig(): ValidatedConfig {
        return (
            new Phase4Validation(
                new Phase3Validation(
                    new Phase2Validation(
                        new Phase1Validation(
                            this._notValidatedConfig
                        ).validate()
                    ).validate()
                ).validate()
            ).validate()
        )
    }

    // Alternative
    validateConfig2(): ValidatedConfig {
        const validatedPhase1Config: ValidatedPhase1Config = new Phase1Validation(this._notValidatedConfig).validate()
        const validatedPhase2Config: ValidatedPhase2Config = new Phase2Validation(validatedPhase1Config).validate()
        const validatedPhase3Config: ValidatedPhase3Config = new Phase3Validation(validatedPhase2Config).validate()
        const validatedPhase4Config: ValidatedPhase4Config = new Phase4Validation(validatedPhase3Config).validate()
        return validatedPhase4Config;
    }
}

Python

Java免责声明:我对 Java 没有任何经验,所以可能存在一些语法错误。

“替代”是相同的代码,但没有直接链接,相反,对于每次验证,它都会创建一个新变量。我认为“替代”更具可读性,但性能更差。

你觉得这段代码怎么样?你改变了什么?您将如何面对这个问题或使用什么设计模式或框架?(编程语言对这些问题无关紧要)

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像