用于存储全局常量,变量和辅助方法以在类之间共享的模式

时间:2014-05-19 21:25:17

标签: php oop design-patterns

我很好奇用什么模式来存储在类之间共享的常量和变量。我试图避免传递容器或使用根应用程序中包含的全局帮助程序文件。我想这些常量可以在一个接口中声明并由所有组件实现,但这并不能解决变量或方法。扩展超级课是不可能的。

示例:假设我们正在为常见的HTTP方法定义常量:HTTP_GET,HTTP_POST等。您希望所有组件确保它们与相同的定义进行比较(例如'Get'与'get'对比'GET',等)

1 个答案:

答案 0 :(得分:0)

共享常量可以定义为静态变量,但问题是哪个类应该包含它们?我已经看到很多专门用于此的Contumants课程,但这些课程很快就会变成乱七八糟的混乱。最好将它们单独放在最能识别它们的类型上。例如,如果您有一个名为HttpRequest的类,那么您的请求方法常量将适合HttpRequest.GETHttpRequest.POST。如果您没有任何一个类比其他类更多地标识常量,那么至少要创建一个类来分组,例如HttpRequestMethods.POSTHttpRequestMethods.GET等常量。

如果您有共享变量,请确保使用setProperty方法封装它们以使其修改线程安全,因为两个或更多协作者可能同时修改变量。对于包含它们的类,您可能希望使用单例模式,而不是静态地公开访问器方法,以便在共享对象上公开共享变量。这样,您可以在需要时使用OOP的好处。单例模式可以抑制可测试性,因此考虑使用IOC容器,该容器将创建此对象的一个​​实例,并将其注入需要访问这些共享变量的所有协作者。