我想我已愛上你——下機之策略模式(一)

       八月五號,星期二,天氣晴,心情複雜

       這一天,是我寫下機的第二天了,感覺寫了很長時間也不知道自己再寫個什麼東西,思路很亂,想實現這個功能,又想實現那個功能,但是一想到代碼,就感覺好混亂呀!我的U層呀,這要是把這功能寫完了,那的藥多少的代碼量,天啊!我自己都不敢想象!於是乎,先嚐試自己把代碼實現了吧,再看看這個功能自己看着哪裏不順眼,再改。

    就這樣子,我就把這個計算的業務邏輯代碼寫在了B層

<span style="font-size:18px;">  </span><span style="font-size:14px;">'計算消費的時間,消費的金額 同時更新到數據庫中</span>
    Public Overrides Function coutMoney(ByVal cardcon As CardConsume, ByVal type As String) As Double
        '首先是先定義一些變量:下機時間,減去上機時間(消費的時間)!
        '基本數據設定中德:每小時的錢,遞增的時間,最少上機時間,最少的消費金額,準備時間
        '首先查找出上機時間,下機時間  查詢的條件:卡號+最大的下機時間  將這條記錄時間查找出來
        '時間查找出來之後就要計算消費時間
        '查找DataBasic中德數據,數據進行計算消費的金額
        '時間和金額算出來之後  更新 上機記錄表
        Dim FixedperMoney As Double
        Dim increasingTime As Double
        Dim minTime As Double
        Dim preTime As Double
        Dim minMoney As Double
        Dim cash As Double
        Dim spentTime As Double
        Dim basicdata As New BasicDataEntity
        Dim Rbasicdata As New BasicDataEntity
        Dim bll As New CardBLL

        '給變量賦值
        Rbasicdata = bll.GetBasicData(basicdata)
        FixedperMoney = Rbasicdata.FixedperMoney
        increasingTime = Rbasicdata.increasingTime
        minTime = Rbasicdata.minTime
        preTime = Rbasicdata.perTime
        minMoney = Rbasicdata.minMoney
        spentTime = bll.InOnlineStime(cardcon).spentTime

        '計算結果

        If spentTime < preTime Then
            cash = 0
        Else
            If spentTime < minTime Then
                cash = minMoney
            Else
                cash = (spentTime - preTime) / increasingTime * (FixedperMoney / 60 * increasingTime)
            End If
        End If

        Return cash
    End Function



       這個只是對固定用戶的代碼,如果這樣做下去,那麼如果我的用戶類型是臨時用戶呢,貌似我還要在B層寫一個臨時用戶的方法,同時我還要在U層中去判斷,臨時用戶用那些方法,固定用戶用那些方法,如果我要有個超級用戶怎麼辦??

      按照這樣的構想,如果我有個超級用戶,第一我要在B層中加一個類,關於超級用戶的,第二呢我還要修改U層中的代碼。這樣就違背了面向對象的開閉原則。同時這樣系統的靈活性很差。這麼做其實還是面向過程,爲了實現功能而去編程。這個該怎麼辦呢??我的這個小心情呀,即高興(實現了一個功能), 又糾結(想辦法推翻這幾的這種面向過程的做法)。

        我該怎麼辦。。。。期待後續。。。

                                                                           

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章