gpt4 book ai didi

php - OOP - 在哪里声明属性?

转载 作者:可可西里 更新时间:2023-11-01 13:39:48 24 4
gpt4 key购买 nike

我的父类有一些方法依赖于只能由子类设置的属性。实现这一目标的“最佳”方法是什么?

  1. 父类将属性设置为默认值(例如,将字符串设置为空字符串),然后子类在其构造函数中设置父类的属性。
  2. 子类将属性定义为自己的
  3. 父类的方法是否应该接受必要的值作为参数?
  4. 还有别的吗???

此外 - 父方法依赖于子方法需要提供的东西是不是糟糕的 OOP?

如果重要的话,我正在用 PHP 做这件事。

最佳答案

所以...您有一个类有一个算法,另一个类负责为该算法提供数据...当我这样说时,您对这些类中的一个仍然有意义吗成为对方的 parent ?

您的“父类”应该将“子类”的一个对象作为构造函数中的一个参数,然后使用该对象来完成它的工作。这种组合模式更加可靠、可重用和易于理解。

有关更多信息,请参阅设计模式文献中的策略模式。


换句话说,不是这个:

+--------------+
| Parent |
+--------------+
|*getName() |
|showGreeting()|
+-----+--------+
^
|
|
+----+-----+
| Child |
+----------+
|*getName()|
+----------+

这样做:

+--------------------+    +----------+
| Parent | | Child |
+--------------------+ +----------+
|Parent(child: Child)|--->| getName()|
|showGreeting() | +----------+
+--------------------+

关于php - OOP - 在哪里声明属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44724694/

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