前言:
狀態者模式
優勢在可將複雜的物件狀態條件,以物件方式來減少條件式的判斷程式
可由物件自身的狀態,決定之後的動作行為.
狀態者模式 說明:
需求簡易流程如下
這是一個簡單的訂單流程圖
我們可看到從建立訂單開始->最後判斷成功或取消訂單 看似簡單但需要寫一定程度的判斷條件式,而且也要做一定程度的逆向流程防呆.
這裡先貼上 未使用狀態者模式的程式碼: PaymentContext.cs
AutoMapper 幫我我們方便管理物件跟物件之間屬性值格式轉換
這裡有兩個類別
UserInfoModel 當作我們從DB撈取出來 模型資料
1 | public class UserInfoModel |
UserInfoViewModel 是呈現在UI或其他地方的模型
其中 Detail
欄位由 UserInfoModel
的 Name
和 Age
屬性組成的
1 | public class UserInfoViewModel |
這時我們就會引用 AutoMapper 幫我們統一管理轉換模型上的問題
SO 發現蠻多人有遇到 Gaps and Islands problem
count of last continuous inserted records based on date
之前有跟大家分享過 解決連續範圍的思路 [SQL連續範圍] 數字,日期連續範圍
今天針對發問者實際例子來一步步 解決問題…
提問出處:count of last continuous inserted records based on date
提問者希望可以獲得最近一次連續日期的次數
例如:
系統模塊存在很多複雜的耦合問題,很適合使用中介者模式來解耦合
在現實中如果組織有一定規模可能構通如下圖那般複雜
如果有一個人或組織負責幫大家協助溝通,就可解決上面複雜問題
這就是我們這次的核心中介者
系統模塊存在很多複雜的耦合問題,很適合使用中介者模式來解耦合
在現實中如果組織有一定規模可能構通如下圖那般複雜
如果有一個人或組織負責幫大家協助溝通,就可解決上面複雜問題
這就是我們這次的核心中介者
RabbitMQ是個訊息仲介(broker),主要是利用消息把生產者跟消費者解耦合
在RabbitMQ主要有以下角色
上面太抽象? 讓我來舉一個簡單點的例子
我們要寄信會把信投進郵筒,信件統一送到郵局,由分配至各個區域郵差去寄送信件
在此可把上面的角色對應在RabbitMQ上
下面是我畫RabbitMq運作流程圖
RabbitMQ是一個訊息中介軟體 (broker), 他實作AMQP標準, 特點是消息轉發是非同步並且可靠.
主要用來處理應用程序之間消息的儲存與轉發可讓消費者和生產者解耦合, 消息是基於二進制
因為RabbitMQ Server是用Erlang語言編寫,所以在安裝RabbitMQ Server前須先安裝Erlang環境
安裝完後可到RabbitMq官網下載安裝Server .
以下是常用在CMD使用的使令
開啟RabbitMq Server.
rabbitmq-server -detached
查看RabbitMq狀態
rabbitmqctl status
查看Queue列表狀態
rabbitmqctl list_queues
查看交換器(Exchange)
rabbitmqctl list_exchanges
查看綁定狀態
rabbitmqctl list_bindings
RabbitMq Server 很貼心也有UI版的控制面板,只需在CMD中輸入這個指令 啟用Server UI套件