有与抽象类相对的东西吗


is there an opposite to an abstract class?

我正在使用我自己开发的PHP框架,它主要基于pear和Zend的组件,但最近Composer 中出现了一些更好的组件

随着我的应用程序的发展,在组件之间切换变得越来越困难,我想知道是否有一种方法可以让我的程序设计得与众不同。在某种程度上,我可以使用与抽象类相反的组件。

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

假设我一直在使用pear-Config/Lite,它只能与ini和数组文件一起使用,现在我喜欢切换到pear-Config或Zend-Config以获得将数据保存在数据库中的好处,那么应该有一种简单的方法可以在不更改所有代码的情况下切换,因为它们实现的完全相同。

我之所以这么问,是因为我一直在使用梨Net/URL/Mapper,这还不错,但我发现了一些可以处理调度的东西,并且正在积极开发中。我也相信这种情况会一次又一次地出现。

您想要寻找类似于facade设计模式的东西,或者只使用委托/组合。但是要注意,在添加抽象层时,使用类似于facade的东西可能会导致大量不必要的复杂性。我建议您阅读一些php设计模式,特别是对象的委托/组合,以了解它如何适合您的情况。

您应该为这个IMO使用composition。让库中的类公开它们自己的公共接口,这是您代码的其余部分所依赖的。如果您将组件的基础从PEAR更改为Zend,只需确保所有原始的公共方法仍然遵循以前的版本,您就应该是黄金级的。如果愿意,您可以使用interface关键字将这些接口形式化,但这超出了本答案的范围;)