【问题标题】:Designing Own Library in CodeIgniter or PHP在 CodeIgniter 或 PHP 中设计自己的库
【发布时间】:2011-07-28 11:39:10
【问题描述】:

我是在 PHP 中实现 OOP 的新手。对于 PHP 项目,我经常使用 codeigniter 框架。目前,我在为自己的库设计类时遇到了问题。 这是描述:

class ABC{
        function A(){

        }
        function B(){

        }
        function C(){

        }
}
class XYZ{
        function A(){

        }
        function similarToB(){

        }
        function X(){

        }
}

ABC 类和 XYZ 类具有相似的特征。函数 A 在两个类之间共享。 ABC 类的 Function B 与 XYZ 类的 functionsimilarToB 相似(它们具有相同的名称和参数,但实现方式不同)。 函数C函数X完全不同。可能还有其他类似的课程。
设计这些类的最佳方式是什么(例如使用继承、接口等)?

【问题讨论】:

  • 太抽象了;正确答案取决于您实际建模的内容。

标签: php oop


【解决方案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() { }
}

我知道每个人都会给你“视情况而定”的噱头(这确实取决于你想做什么),但我认为这就是你要找的。​​p>

【讨论】:

  • 感谢您为我提供选择。我认为这对我有用。
【解决方案2】:

您可以将其编码为单个类,将其保留为两个类,甚至将其编码为八个单独的类。也许你可以建立一个基类,然后有两个扩展基类的类。

哪个最好取决于您要做什么。

从本质上讲,大多数编程实际上是在为某个现实世界过程构建一个抽象模型,该模型本身可能是真实的或抽象的。最好的设计是最能反映现实世界过程的设计。

因此,如果您尝试实现说“邮购”和“直销”这两个变体都是销售的变体,我会推荐一个带有“mail_order”和“direct_order”类的基本“销售”类扩展基类。

相反,如果您尝试实现“邮购”和“邮件广告”,它们是恰好使用邮政系统的独立业务流程,我会将这些类完全分开。

【讨论】:

    猜你喜欢
    • 2010-12-30
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多