我是一个在PHP中实现OOP的新手。对于PHP项目,我经常使用codeigniter框架。目前,我在为自己的库设计类时遇到了问题。 这是描述:
class ABC{
function A(){
}
function B(){
}
function C(){
}
}
class XYZ{
function A(){
}
function similarToB(){
}
function X(){
}
}
ABC类和XYZ类似的功能。功能 A 在两个类之间共享。 ABC类中的函数B 类似于XYZ类中的 function similarToB (它们具有相同的名称和参数,但实现方式不同)。 功能C 与功能X 完全不同。可能还有其他类似的课程 设计这些类的最佳方法是什么(例如使用继承,接口等)?
答案 0 :(得分:1)
我的建议:
class ancestor {
public function A() { }
}
interface BInterface {
public function B();
}
class ABC extends ancestor implements BInterface {
public function B() { }
public function C() { }
}
class XYZ extends ancestor implements BInterface {
public function B() { }
public function X() { }
}
我知道每个人都会给你“依赖”shtick(这确实取决于你想做什么),但我认为这正是你要找的。 p>
答案 1 :(得分:0)
您可以将其编码为单个类,将其保存为两个类,甚至将其编码为八个单独的类。也许你可以在一个基类上创建两个扩展基类的类。
哪个最好取决于您要做的事情。
基本上,大多数编程实际上是构建一个真实世界过程的抽象模型,它本身可能是真实的或抽象的。最好的设计是最能反映现实世界过程的设计。
因此,如果你试图实施一个“邮购”和“直接销售”,这两个都是销售的变种,我会推荐一个基础“销售”类,其中包含“mail_order”和“direct_order”类基类。
相反,如果你试图实施一个“邮件订单”和一个“邮件广告”,它们是恰好使用邮政系统的独立企业流程,我会将这些类完全分开。