根據學習和工作中的理解,採用MVC設計模式,設計了兩種模式。第一種採用了抽象工廠、命令模式、組合模式等,面向介面編程,支持單一和組合操作,具有撤銷(Undo)和重做(Redo)功能。第二種模式對第一種做了簡化,主要針對資料庫操作,支持共用資料庫連接和靈活的搜索條件。
第一種模式,可處理組合命令,具有撤銷(Undo)和重做(Redo)功能,支持多種資料庫類型 1.Action採用組合模式,既可以代表一個簡單的動作,也可以代表一組動作組合。
List<Action> Cmd代表要執行的任務,可拆解成一個或一組動作(Action)。
以資料庫操作為例:
1.1 執行一個簡單的插入命令,只需要創建一個插入Action即可;
1.2 若要實現一個複雜的事務(一組增刪改操作),則可將這些增刪改的Action創建成一個複合Action;
1.3 若要實現簡單的搜索,只需創建一個查詢Action即可;
1.4 若要實現級聯查詢,則需要創建一個複合查詢Action,即父查詢Action添加與之級聯的子搜索Action,組合成一個複合查詢Action。
PS:若業務邏輯很簡單,Control可直接調用Dao;
2.List<Action> Undo和Redo,用於實現Undo(撤銷)和Redo(重做);具體實現需要Action配合。
3.Action執行任務採用命令模式,真正的執行在IDao對象執行(命令與實現分離,易於擴展),IDao對象採用抽象工廠模式創建。
4.ConcreteDao實現IDao介面,側重增刪改查的邏輯實現,具體實現由DBHelper執行。 優點: 1.Action可以表示的動作很多,可擴展性強; 2.使用抽象工廠模式,容易轉換資料庫操作; 3.Control類可以實現Redo和Undo操作,並且支持事務(一組Action 或 複合Action) 缺點: 1.有多個介面,實現相對複雜; B.側重資料庫操作的版本(未顯示view) 1.定義IBaseDao介面,可將單一dao對象組合成複雜dao(多個dao共用資料庫連接);
2.靈活的搜索條件(SearchCond),可設置單一和組合的搜索條件,應用於級聯搜索; 3.支持不同的資料庫操作實現。
1.IBaseDao定義了基本的Dao操作介面,並且可實現組合方式,父Dao添加子Dao後,只需父Dao打開和關閉資料庫連接即可,實現共用父Dao的資料庫連接等資源。
2.SearchCond定義了搜索條件,可靈活地增加和刪除搜索條件,並支持組合方式。
使用SearchCond即可滿足搜索單表查詢要求;
當級聯搜索時,子表的搜索條件可添加到父表的搜索條件中,作為一個符合的搜索條件ConcreteCond。
3.ADOBaseDao和OCIBaseDao實現IBaseDao的介面,為其子類提供基礎服務。(類和介面繼承)
4.使用IDao,可以面向介面編程,可以靈活地切換Dao的具體實現方式。