物件導向編程Sample(C#)

來源:互聯網
上載者:User
Object Oriented Programming,OOP

本篇旨在講述如何以物件導向的思維編程

以下訂單為例,客戶通過web,填寫連絡人資訊、所購買服務(就是幾個checkbox,買幾個服務,就勾選幾個checkbox,價格基於所選擇的服務來計算)、網上支付;點了“提交”按鈕後,會進行如下操作:儲存到資料庫、信用卡支付、產生訂單pdf、發送郵件通知客戶。

 

一般代碼類似如下:

public class OrderController

    {

        OrderDAL dal = new OrderDAL();

 

        public Guid PlaceOrder(OrderInfo orderInfo)

        {

//驗證函式,略

 

            Guid orderId=Guid.Empty;

            bool saveOk = false;

            using(TransactionScope ts=new TransactionScope())

            {

                orderId = dal.InsertOrder(orderInfo);

                if (!orderId.Equals(Guid.Empty))

                    if (PaymentService.Pay(orderInfo.Price))

                        saveOk = true;

 

                if(saveOk)

                    ts.Complete();

            }

 

            if (saveOk)

            {

                GenerateNewOrderPdf(orderInfo);

                SendEmail2Client(orderInfo);

            }

 

            return orderId;

        }

 

        private void SendEmail2Client(OrderInfo orderInfo)

        {

            throw new NotImplementedException();

        }

 

        private void GenerateNewOrderPdf(OrderInfo orderInfo)

        {

            throw new NotImplementedException();

        }

    }

 

上面這段代碼就是Martin folwer所說的”事務指令碼模式”,即:一個業務方法寫在一個函數裡,一大塊從頭到尾寫完。

 

如果想以物件導向方式來寫,該如何寫呢?答案是(我目前個人認為…哈哈):畫出順序圖表,再進行編碼。

因為使用順序圖表能夠協助找到各個對象、以及各對象間的通訊方法,如下:

這個圖貌似比較複雜,因此只有當系統比較複雜時(商務邏輯)才會選擇用物件導向的方式來拆分各個對象,好處有:

1.       各個對象其實就是關注點分離,因此維護方便

a.       比如驗證那裡,修改起來非常有針對性,很容易定位要修改哪個類

b.      計算價格那裡也是,很容易定位到需要修改的地方

2.       單元測試時,可以單獨測試各個類,而不用給PlaceOrder寫無數的測試函數(分而治之)

a.       如果是“事務指令碼型”,給這個PlaceOrder寫單元測試 && 程式碼涵蓋範圍要>=70%,光驗證那塊就需要很多

b.      OOP的代碼可以分別給各個class編寫單元測試,且程式碼涵蓋範圍>=70%比較容易能做到

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.