|
|
1
6
在我看来,这在PHP中并不干净。就像你试图把C方式塞进PHP,因为你认为这是C的一个好特性。 我认为它是:在php中,你正在制作一个 功能 因为做了两件完全不同的事情,这是没有意义的。同时,在C中,它是单的 财产 它被设计成一个单一的访问点,用于设置/检索对象。 |
|
|
2
4
你违反了 Single Responsibility Principle 一个函数既是getter又是setter。 在C中,它只是语法上的糖分,被转换成getter和setter,就像您应该用PHP编写它一样。 事实上,在C中,您可以通过编写进一步简化它。
编译器将生成一个私有的支持字段,并为您生成getter和setter函数。 |
|
|
3
2
如果需要对要设置的值进行一些附加检查,您可能需要定义
|
|
|
4
2
这是明智的,例如:
然后做
现在,它创建了一个
无限的
准备使用的匿名函数的数量,通常使用2种方法构造,
这样可以设置变量,如下所示:
但是您可以进一步创建一个变量注册表系统:
所以基本上你可以把上面的课从
像这样使用:
因此,您只需定义一次方法,只要您将继承结构构建成一个好的设计,它就可以非常好地工作。 |
|
|
5
0
我个人在PHP中使用了类似的模式。我觉得它很干净而且相当有用。
您甚至可以这样做来强制某种类型的安全性:
您还可以强制设置/获取引用而不是副本:
这是完全有效的PHP,非常好地模拟了C。 此外, Single Responsibility Principle 国家:
因此,这并没有打破单一责任原则,因为这只是一个用于获取/设置类成员变量的类方法。 唯一的缺点是,在类的实例上,您必须调用函数来获取/设置成员变量,而不是真正的属性。您可以将这个设计模式与php的get和set混合使用,但这只会增加开销。 |
|
|
simply lemon · python上链表的添加方法 1 年前 |
|
|
Anonymous · 为什么在这个例子中self和类名的用法不同? 1 年前 |
|
|
P N Singh · 在CPP Oops中调用对象而不创建它 2 年前 |
|
|
Muthuraj · 如何创建一个通用工厂来创建某种类型的实例[重复] 2 年前 |
|
|
Andy Votava · 从父类定义调用学生方法 2 年前 |