職責鏈 策略模式 外觀實現使用者下機

2022-03-24 11:03:24 字數 2121 閱讀 9848

最近又重新拿起了機房合作,經過幾天的奮戰,**實現已經基本完工。學生下機計算消費時間和消費是乙個比較複雜的邏輯,經過兩天的考慮之後發現其實也沒有那麼難,結合大話設計模式,發現只是對設計模式的簡單應用。

下機需要做的事情:

1)計算下機時間

2)根據不同使用者計算消費金額

先看一下類圖,類圖如下:這三個類依次為準備時間、最少上機時間、單位上機時間。職

模式:使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理他為止。這三個類實現從準備時間--->最少上機時間----->單位上機時間依次進行處理,直到處理完成。

linetimehander:定義抽象的方法

public abstract class linetimehandler

#endregion

#region 處理請求的抽象方法 abstract int handletime(int request)

/// /// 處理請求的抽象方法

///

///

///

public abstract int handletime(int request);

#endregion

}

preparetimehandler1:準備時間

public class preparetimehandler1 : linetimehandler 

~preparetimehandler1()

public override int handletime(int consumetime)

else} }

leasttimehander:最少上機時間,繼承抽象類

public class leasttimehander:linetimehandler

#endregion

#region 重寫linetimehandler中handletime方法 override int handletime(int consumetime)

/// /// 重寫linetimehandler中handletime方法

///

///

///

public override int handletime(int consumetime)

else

}#endregion

}

linetimehandler2:單位遞增時間,繼承抽象類  

public class linetimehandler2 : linetimehandler

#endregion

#region 重寫linetimehandler中的handletime方法 override int handletime(int consumetime)

/// /// 重寫linetimehandler中的handletime方法

///

///

///

public override int handletime(int consumetime)

#endregion

}

另外在類圖中還看到乙個類,是為了方便在客戶端的呼叫,我在外觀寫了乙個類,給客戶端乙個統一的介面,只要傳入引數,我就可以直接呼叫b層的方法。

linetimehandlercountfacade: 

public class linetimehandlercountfacade

#endregion

}

客戶端呼叫:

//呼叫職責鏈模式,計算上機時間

oole.consumetime = linefacade.costtime(basicdataentity, oole);

int consumetime = oole.consumetime;

這樣就實現如何在客戶端傳入引數實現給不同使用者消費時間,一級一級傳下去最終返回來使用者的消費時間,接下來還需要根據使用者不同型別計算不同消費金額,用的策略模式實現不同使用者不同的消費方式,將在下篇部落格分享!



職責鏈模式(C 實現)

使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,知道有乙個物件處理它為止。職責鏈模式 請求類 class request string requesttype string requestcontent int number 管理...

職責鏈模式 java實現

需求分析 你把今天你向經理申請,經理沒權利 然後向總監上報 總監也沒有許可權 向總經理上報的事 寫成 看看 不一定是加薪 也有可能是請假申請 public classrequestelseelseelse if request.gettype 加薪 request.getnumber 500 els...

職責鏈模式(c 實現)

目錄職責鏈模式 chain of responsibility 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。include class request include request.h reques...