2011-03-25 49 views
2

我爲我的項目使用php OO。我的應用程序中有很多家庭,因此我必須使用開關,並在每個需要檢查家庭的文件中執行此操作。所以我覺得這樣的表演是受到影響的。所以有什麼辦法可以消除這些開關情況,並使用一些設計模式或類似的東西。目前的想法是爲每個家庭都有一個單獨的代碼庫,我不完全滿意。所以尋找各種選項來解決這個問題。OO代碼的改進php

+0

有些代碼可以幫助我們幫助您。 – Dutchie432 2011-03-25 11:31:03

+0

工廠模式? – 2011-03-25 11:34:20

+0

@Mark Ba​​ker或策略 - 它取決於.. – dantuch 2011-03-25 11:54:19

回答

3

我只能從他的書「重構:改進現有代碼的設計」中引用Martin Fowler。

switch語句

之一的 面向對象的代碼的最明顯的症狀是其 比較缺乏開關(或情況)的 語句。開關 聲明的問題基本上是 重複的問題。通常你會在不同的地方找到與 程序相同的 開關語句。如果您在 中添加了一個新的子句給交換機,那麼您的 必須找到所有這些交換機, 語句並對其進行更改。 面向對象的 多態性概念爲您提供了一種優雅的方式 來處理這個問題。

大多數時候你看到一個switch語句 你應該考慮多態。 問題是多態性應該發生的地方 。開關語句 通常會打開一個類型代碼。你想要 方法或類的主機類型 代碼值。因此,使用提取方法 提取switch語句,然後使用 Move方法將其獲取到需要多態性的類 。在 那一點你必須決定是否 用 替換類型代碼或替換類型代碼 狀態/策略。當您設置了 繼承結構時,可以使用 將條件替換爲多態性。

考慮購買和閱讀這本書,這是我讀過的最珍貴的作品之一。

+0

+1。真棒書。 – Gordon 2011-03-25 12:04:22