2012-07-11 94 views
0

我用我自己的土生土长的PHP框架,它在很大程度上基于大多来自梨和Zend但最近也有一些更好的组件来了在Composer是否与抽象类相反?

由于我的应用程序组件正在成长变得更难组件之间切换,我想知道是否有一种方法可以以不同的方式设计我的程序。在某种程度上,我可以使用像抽象类相反的组件。

我在想,应该有一种方法让我创建自己的类,而这些类又反过来嵌入到pear或zend中,并像使用接口或抽象类一样使用这些类。当然,他们会做实际的工作,我只会链接到他们。

假设如果我一直在使用pear Config/Lite,它只能用于ini和数组文件,现在我想切换到pear config或Zend config来获得将数据保存到数据库中的好处,然后在那里应该是一个简单的方法来切换而不改变我所有的代码,因为他们实现的是完全一样的东西。

我在问,因为我一直在使用Pears Net/URL/Mapper,这并不坏,但我发现了一些也会照顾到调度的事情,并且正在积极开发中。我相信这种情况会一次又一次地出现。

+1

这听起来像你有一个理解接口的使用问题。 – zzzzBov 2012-07-11 17:16:53

回答

2

你想寻找像门面设计模式,或只是使用委托/组合。但是要小心,当你添加抽象层时,使用像facade这样的东西会导致很多不必要的复杂性。我建议你阅读一些php设计模式,尤其是对象的委托/组合,以便了解如何适合你的情况。

+0

我以前用过的作品,不知道它被称为作曲。门面设计模式是我一直在寻找的。谢谢。 – RoboTamer 2012-07-11 18:20:51

1

您应该为此IMO使用组合。让库中的类暴露自己的公共接口,其余代码依赖于这些接口。如果您将某个组件的基础从PEAR更改为Zend,那么确保所有原始公共方法仍然遵守之前的版本,并且您应该是金牌。如果你愿意,你可以用interface这个关键字来形式化这些接口,但这已经超出了这个答案的范围;)