gpt4 book ai didi

php - 构造单例类(class)

转载 作者:行者123 更新时间:2023-12-02 05:19:26 24 4
gpt4 key购买 nike

这里有一个道德问题。

我计划在新项目中使用几个经理类,这些类将在整个项目中执行各种任务。这些类是单例,但是需要基于参数进行构造。

至于何时何地进行这种构建,我有不同的感觉。到目前为止,我有以下选择:

选项A

只需将这些参数传递给getInstance方法,同时具有默认的null值,这很容易。在第一次调用时,将使用参数,所有其他调用将完全忽略它们。

尽管这样做有效,但出于以下原因,这样做感觉很不合逻辑:

  • 它使文档不清楚。 getInstance'第一个参数必须为Collection类型,但可以是null ...这是怎么回事?
    您可以争辩说,在描述中写一条线可以清除它,但是我希望澄清是不必要的。
  • getInstance传递给任何构造参数都感到不对。 这是由于以下事实:方法名称没有显式提示构造,因此不清楚它是否会发生。

  • 选项B

    我在考虑 setup方法。此方法接受所有参数,调用类构造函数,并将内部类状态更改为 initialized

    getInstance之前调用 setup方法时,它将抛出 NotInitializedException。调用安装程序后,对 setup的任何其他调用都将导致 PreviouslyInitializedException

    调用 setup后, getInstance变为可用。

    就个人而言,此选项对我更​​具吸引力。但是感觉太过分了。

    您更喜欢哪种选择?又为什么呢

    最佳答案

    我可能会尝试放弃单例方法,并将管理器类传递给需要它们的任何人。

    $manager = new Manager( $collection, $var, $var2 );

    $other_class = New OtherClass( $manager );
    //or
    $other_class = New OtherClass;
    $other_class->manager = $manager;
    //or
    $other_class = New OtherClass;
    $other_class->setManager( $manager );

    关于php - 构造单例类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5836909/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com