發表文章

目前顯示的是有「Architecture Deisign Pattern」標籤的文章

C#_MVP Pattern_探究(1)再次溫故MVC

圖片
在很久之前有寫了兩篇是使用JAVA來分享關於MVC的基礎觀念和練習示範 有興趣的開發朋友可以點下面回顧 JAVA MVC_以MVC架構來進行Java GUI程式開發(一) 介面層邏輯和業務層邏輯的拆分 https://coolmandiary.blogspot.com/2019/01/java-mvcmvcjava-gui.html JAVA MVC_以MVC架構來進行Java GUI程式開發(二) 建構簡單的四則運算計算器_model中負責計算 http://coolmandiary.blogspot.com/2019/01/java-mvcmvcjava-guimodel.html 那近期剛好又認識到了另一個架構設計的模式跟它有點相似叫做「MVP」 Model-View-Presenter 是基於MVC又再延伸發展出來的一種使用者介面設計模式 這裡我們做一個MVC和 MVP的比對 MVC主要由如下三元素組成,各自職責分別如下: Model(模型):資料保存 View(視圖):使用者介面 Controller(控制器):業務邏輯 主要思維: 1.由View負責傳送指令到Controller 2.Controller完成業務邏輯流程之後要求Model改變狀態 3. Model在去將資料發送到View上,使用者獲得回饋 。 運作方式: 在使用者操作時候,MVC又可分為兩種方式 一種通過View來接受指令再傳送給Controller 另一種則是直接去透過Controller接收指令(上一次Java設計的範例就是採用這樣子設計思維) MVC的優缺點: 優點: (1)把業務邏輯全部分離到Controller中,可模組化程度較高。 當業務邏輯變更的時候,不需要變更View和Model,只需將Controller換成另外一個Controller就行了。(Swappable  Controller) (2)通常透過Observer Pattern來進行多個View的同步更新。 缺點: (1)在沒有UI環境下對Controller做Unit Test時,比較不容易測試。 因為View的同步操作是由View自己執行的。(View只能在有UI的環境下運行。) ...

JAVA MVC_以MVC架構來進行Java GUI程式開發(二)_建構簡單的四則運算計算器_model中負責計算

圖片
於前一篇大致上介紹到MVC核心理念 這裡要對於Model運算部分做一個加強示範 於上一篇示範練習比較強調在於Controller的溝通 這篇我們要來練習簡單四則運算中 別於以往的嵌入介面層設計我們把計算的流程定義於Model當中 於Controller中去呼叫做計算然後再更新顯示給View CalculatorModel.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com. cal . Model ; /** * * @author chous */ public class CalculatorModel { private int calculationVal; public void addTwoNums ( int firstNum, int secondNum){ calculationVal = firstNum + secondNum; } public int getCalculationValue (){ return calculationVal; } } CalculatorView.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ...

JAVA MVC_以MVC架構來進行Java GUI程式開發(一)_介面層邏輯和業務層邏輯的拆分

圖片
JAVA MVC架構實作 在一些現今程式應用中 很常聽到和使用到的MVC(Model-View-Controller) 最早於1978年的 特里夫·林斯高格  ( Trygve Reenskaug )  所提出的軟體工程三層架構 其主張介面層邏輯要跟業務層邏輯分離 不應該混在一塊 使程式各自類可以各司其職(符合單一職責原則) 利於後續程式增多後的維護 Model : 負責儲存及維護一些來自前端使用者介面資料的流程邏輯 (使用者輸入了資料後進行捨麼計算....) View : 舉凡使用者和前端介面互動的相關流程邏輯接歸屬於View來做控制 (捨麼時候要跳窗,當按下捨麼按鈕做....) Controller : 介於Model和View兩者之間的溝通橋樑 主要接收View使用者於前端介面的資料後再傳遞給Model並接收來自Model回傳結果 再丟還給View進行介面渲染(更新顯示)的流程。 這樣就不會於系統維護到後期時發生 因為過去都將Model  data處理邏輯部分的Code內嵌至View而造成的 因為後續有需要用多個不同的View要來顯示某些同一資料部分 而導致出現重複黏貼Model data code 處理的區塊 開發規格與工具 新增好專案後 建置好三個java package 資源package下存著一張400*200的底圖 針對View 新增一個繼承JFrame的可視化class 及設計面板 首先將預設新增的View JFrame中進入點程式移動至main中 於此的main區塊可先暫時註解掉(留著做針對該類中的 unit test也可以) 程式運行時會自動找main進入點於哪個class的java檔案去運行 針對View 類別 起初預設的程式碼 我們進行介面端的邏輯設計規劃 Defalt View.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ...