求一種合適的設計模式解決這個問題

2021-08-29 06:30:10 字數 910 閱讀 5117

求一種合適的設計模式解決這個問題

[code] public string ondelete(object obj)

else);}

}catch(exception ex)

return result;

}public string oninsert(object obj));}

catch(exception ex)

log.info("generalpersistbo...insert()...result:"+result);

return result;

}[/code]

這是乙個進行持久化事務的類,這裡有兩個dao分屬於不同型別,springdao只往乙個資料庫中存資料,springbakdao會往備份資料庫中存資料,backup常量控制是哪種持久化方式,問題是,每次crud操作時,

都對backup判斷一次, 實在是有冗餘**,不是乙個良好的設計,我想到幾個方案:

1 使 springdao和springbakdao都實現乙個idao介面,但問題是,這兩個dao的crud方法,都是需傳入不同的引數個數的,如果想統一起來,可以寫乙個adapter,然後實現所有介面方法,再每個dao繼承這個adapter並過載相關的方法,但是,由於要傳入的引數個數不同, 始終要判斷backup的值

2 用proxy或interceptor, 都存在乙個難點,不同dao的相同的crud方法的引數都不一樣的,就算同乙個dao型別的crud四個方法的引數個數也不一致,例如

springbakdao.delete(vo,new string),springbak.insert(vo,new string); 如果我用proxy模式,豈不是要傳入最多的引數個數入這個proxy類裡面,才能應付所有情況?

兩種方案都不是理想的,所以想聽聽大家的意見,有什麼更好的模式可以解決這個問題.謝謝

設計模式的一種 命令模式

命令模式是關於怎麼樣處理乙個物件請求另乙個物件呼叫其方法完成某項任務的一種模式,在命令模式中,當乙個物件請求另乙個物件呼叫其方法失,而又不想和被呼叫的物件發生直接關係,而是把請求組封裝在乙個請求物件中,既是把引用封裝在方法中,以達到傳送命令的效果 在呼叫時 被呼叫的只需要和命令物件打交道,四種角色 ...

每天學一種設計模式

目前常用的設計模式有23種,何為設計模式?神聖嗎?難學嗎?只要堅持學,用,總結,都不難。設計模式說白了就是前人總結的設計經驗,用的多了也就熟練了,但是也不要生搬硬套的去用,我們平時或多或少都有接觸,只不過沒有細緻歸納,總體分為三大型別,建立型 結構型 行為型,後面會一一詳細介紹。一 建立型模式 工廠...

學會一種主流的設計模式

在設計通訊時,我們可以採用面向訊息的中介軟體,比如apache activemq rabbitmq apache rocketmq apache kafka等,也有類似與 google protocol buffer thrift等 rpc框架。在設計分布式計算時,我們分布式計算可以採用 mapre...