2012-10-30 53 views
0

我有下面的代碼依次執行,方法依次執行。我應該使用哪種設計模式?

我加載的要求,進行了幾個檢查如檢查是否有響應已經存在這個要求,如果沒有,我所說的服務,並接受我保存到數據庫的響應。

我一直在尋找一種設計模式,我可以在這樣的情況下使用,我想在這裏張貼這一點,並得到一些想法。

public class Manager 
    { 

     public void PutRequest() 
     { 
      //Do Something 

      if (loadRequest()) 
      { 
        callService(); 

        //Do Something 
        saveResponse(); 
      } 

     } 

     private bool loadRequest() 
     {    
      bool isExist = checkIfResponseExists(); 

      if (!isExist) 
      { 
       // If false, load request from DB 
      } 

      return !isExist; 

     } 

     private bool checkIfDataExists() 
     { 
      //Check if a response already exists in the DB for this request 
     } 

     private void callService() 
     { 
      //Call the service and receive the response 
     }  

     private void saveResponse() 
     { 
      //Store the response in the DB 
     } 

    } 
+2

爲什麼你使用'方法2()'因爲它調用'方法3()'?那麼立即調用'method3()'怎麼樣? :) –

+1

等等....不都是那些屬性? :P –

+0

如果method3返回false,則Method2從DB加載請求。這些實際上是代碼的小型版本,還有更多的方法和更多的代碼。我只是試圖說明我的意思是說代碼按順序執行。 –

回答

1

模式用於解決一些問題。你現在的代碼有什麼問題?除了方法名稱之外,我沒有看到任何重複的代碼。沒有模式,它修復了方法命名問題。

是的,你的代碼需要一些重構,而不是模式。更好的課堂和方法命名是第一步。另外,我刪除了字段isExist

public class Manager 
{ 
    public void PutRequest() 
    { 
     //Do Something 
     if (!CheckIfResponseExists()) // returns boolean value 
      LoadRequestFromDB() 

     CallService(); 
     //Do Something 
     SaveResponse(); 
    } 
} 
+0

我用有意義的東西替換了方法名稱,但我並沒有詢問這個確切的代碼,我的問題是「什麼是最好的模式,用於像上面那樣按順序執行的代碼? –

0

看起來這會是幾個比較有用這些方法是功能。因此不是誰的責任是既檢查條件,並做一些其他的操作方法,你有檢查,然後一個條件,即所謂的它根據結果一些操作方法的功能。 (種類SRP應用於方法...)

public void DoAllTheThings!() // Oops, Ruby syntax creeping in :P 
{ 
    if(!WeCanDoIt()) 
    { 
    MakeItSo(); // So that we can do it... 
    } 

    NowWeCanDoAllTheThings(); 
} 

private bool WeCanDoIt() {} 
private void MakeItSo() {} 
private void NowWeCanDoAllTheThings() {} 
0

Command + Composite。

有些人考慮使用的的if/then命令 - 在您的情況,這將是在putRequest - 在一個複合的一種鏈責任的。

0

在選擇一個模式,你應該考慮應用程序的可擴展性

一個可以應用模式是狀態模式

會有兩種狀態。

  1. 響應已經存在
  2. 需要處理新的響應
相關問題