模式中的HELLO WORLD
你每次都考虑过"Hello World"被重新实现过多少次吗?这是一个最根本的浪费重用的机会!下面是一个关于设计模式的故事......
疯狂的运用设计模式
有关滥用或过度使用设计模式已经不是一件新鲜事了。我这里就有一个例子。我实现了一个"Hello World"命令行脚本,使用大概160行面向对象的PHP 5代码。这个原则已经无理由的加入了设计模式。
它比简单的打印"Hello World"做得更多。它将使用两种可选择的方式打印并且显示你输入的其它文字。与之相等的脚本将只有4、5行。也许他需要一张用例图?
这个程序使用了多种设计模式,包括MVC(模型、视图、控制器), Observer(观察者模式), Strategy(策略模式), Decorator(装饰模式), Factory Method(工厂方法模式)和Facade(门面模式)。
它将着重于尝试将所有的GoF的实际模式运用起来,并且我确定我可以将它增加到1000行,但我不会这么做因为我还有其它事要干。
一些我写代码过程中的注意事项:
1、如何让没有价值的代码看起来使人印象深刻。
2、如何让这种没有用的机制运行起来。
3、如何当程序的复杂性增加的时候仍然有更多机会去增加无用的设计模式。
从一个更大的视角来看这个这些观察资料是使人厌烦的。这个例子看起来支持设计模式的概念,但是却更容易导致问题,并且难于诊断和解决。
如果这个代码写的更老练并且无意义的部分更少,或许它更难以被重构。他就像一个迷宫。这个从死亡的设计模式散发出来的腐烂的臭味并不是他特有的。
但是这个程序工作了。经管他已经死亡了,它仍然执行了并且产生了一个结果。你或许会说这就像那些一通过电流就抽搐的青蛙的腿。
将它和典型的hacker产品比较,它或许不是一个参观的好地方,但是这却有一个紧急出口。简单的说,良好的重构所做的工作就是改变了代码直接相关的类型。(而然,如果你真的想阻止重构,单个字母的变量名和自由使用的全局变量将非常有效。)
/*代码略,请参考原文*/
挑战:HelloWorldFormatter类目前只支持使用命令行格式化"Hello World"。这个例子需要增加HTML支持,就好像"Hello World<br>"这种格式。如果你想要支持HTML,考虑一下XHTML,必须要支持"Hello World<br />"这种格式。开始挑选你的模式吧......
原文及代码:http://phppatterns.com/index.php/article/articleview/103/1/1/