HELLO WORLD中的設計模式

2021-03-31 08:56:58 字數 1223 閱讀 7851

模式中的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

"這種格式。如果你想要支援html,考慮一下xhtml,必須要支援"hello world

"這種格式。開始挑選你的模式吧......

原文及**:http://phppatterns.***/index.php/article/articleview/103/1/1/

cocos creator中的MVC設計模式

在遊戲開發的行業中摸爬滾打走了很多路,在這裡將我的經驗分享給大家。無論是unity或者是cocos,白鷺 在遊戲的設計框架中大多數程式設計師還是遵循mvc來開發的。今天的涉及就是mvc模式,我以creator typesprite講解。首先為什麼用mvc,好處又是什麼呢?mvc無人不知,可很多程式設...

在PowerDesigner中設計概念模型

在概念模型中主要有以下幾個操作和設定的物件 實體 entity 實體屬性 attribute 實體標識 identifiers 關係 relationship 繼承 inheritance 關聯 association 關聯連線 association link 實體 實體就是我們抽象出的物件,比如...

在PowerDesigner中設計概念模型

在概念模型中主要有以下幾個操作和設定的物件 實體 entity 實體屬性 attribute 實體標識 identifiers 關係 relationship 繼承 inheritance 關聯 association 關聯連線 association link 實體 實體就是我們抽象出的物件,比如...