我已经标记了这个问题PHP,但它更多的是关于设计模式的问题,即工厂模式;PHP 只是我正在使用的编程语言。
我正在建立一个房地产经纪人(美国表亲的“房地产”)网站。我有一个Property
类,但其他类扩展了它,即LettingProperty
具有CommercialProperty
特定于该类型属性的字段。
在我的控制器中,我想显示一个特定的属性。这很容易,因为我将属性 ID 作为参数传递。我的方法是创建一个工厂类,将属性作为相关类的实例返回。例如,如果 ID 为 1 的属性是出租属性,则返回 的实例LettingProperty
。如果它只是一个标准的“待售”属性,则为Property
.
我该怎么办?我创建了一个PropertyFactory
类并实现了一个名为 的方法buildFromId()
,但是在创建一个优雅的解决方案时遇到了麻烦:
properties
在我的数据库表中找到相关记录- 做任何
LEFT JOIN
s (即如果它是一个让属性离开加入相关数据letting_properties
(外键property_id
:) - 返回结果数据,作为相应类的实例
对于这种情况,工厂方法是正确的设计模式吗?如果是这样,我该怎么做?