我有一个人物。
class Person {
private $name;
...
}
我需要能够改变它们在前端的显示方式(访问者有控制权)。例如,他们可以选择列表视图,网格视图,照片视图。
class PersonDisplay {
public function displayList() {
// Query database
// Output html to display in list mode
}
public function displayPhoto() {
// Query database
// Output html to display in photo mode
}
}
这是一种可以接受的方式来处理前端项目的呈现,还是我应该研究一个特定的设计模式来帮助我完成这项任务?有没有人有任何建议或想法,如果这可能会出错或者这可能会使维护成为一场噩梦?
Person对象只是一个与我正在使用的类似的例子。
答案 0 :(得分:0)
我觉得很多人都会被“最佳实践浪潮”所淹没,在那里,精英程序员所说的话总是最好的。这是我的意见:
如果它有效且非常优雅,那就去吧。
只要您的解决方案不是“hackish”并且会随着您的应用程序使用量的增加而扩展,那么无论您想出什么都可以。
就最易维护的而言,你有两个根本不同的观点:网格和列表。如果你假设你每个都需要两个独立的HTML块,只要你没有上下复制代码,那就没关系了。如果您确实看到要复制大量代码,请在PersonDisplay
中创建一个私有函数并将逻辑集中在那里。
坦率地说,看起来这段代码不会再增长太多,比如千行代码(最大值)。使用一些常识并不时地检查现实。如果您发现创建的函数太多,请合并一些函数。如果您正在编写重复的代码,请将该代码移到单独的函数中。你真的不能把这个搞砸了。
俗话说“不要为小东西出汗”。你可以不时地使用不完美的代码。
答案 1 :(得分:0)
看起来你想要(并且正在使用)的是Observer模式。 http://en.wikipedia.org/wiki/Observer_pattern#PHP
在此模式中,一个类包含您要存储的数据,另一个类包含您可以显示数据的不同方式的实现。