C#实现MVC模式简要方法(2)
生活随笔
收集整理的這篇文章主要介紹了
C#实现MVC模式简要方法(2)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
作為總是想的遠一點的開發(fā)人員,我們想讓我們的系統(tǒng)有一個長久并且良好的生命周期。這就是說能夠進可能的準備好滿足ACME的很多變化。為了做到這一點,我們知道要遵循兩條原則...“保證你的類低耦合”,要達到這個目標,還要“對接口編程”。
所以我們要做三個接口(正如你所猜測,一個Model接口,一個View接口,一個Control接口)。
經(jīng)過很多調(diào)查研究,和與ACME人的費力咨詢,我們得到了很多有關(guān)詳細設計的信息。我們想確定我們可以設置的最大速度在前進,后退和轉(zhuǎn)彎中。我們也需要能夠加速,減速,左轉(zhuǎn)和右轉(zhuǎn)。我們的儀表盤必須顯示當前的速度和方向。
實現(xiàn)所有這些需求是非常苛刻的,但是我們確信我們能夠做到...
首先,我們考慮一下基本的項目。我們需要一些東西來表示方向和轉(zhuǎn)動請求。我們做了兩個枚舉類型:AbsoluteDirection 和 RelativeDirection。
public enum AbsoluteDirection
{
North=0, East, South, West
}
public enum RelativeDirection
{
Right, Left, Back
}
下面來解決Control接口。我們知道Control需要將請求傳遞給Model,這些請求包括:Accelerate, Decelerate, 和 Turn。我們建立一個IVehicleControl接口,并加入適當?shù)姆椒ā?br />
public interface IVehicleControl
{
void Accelerate(int paramAmount);
void Decelerate(int paramAmount);
void Turn(RelativeDirection paramDirection);
}
現(xiàn)在我們來整理Model接口。我們需要知道汽車的名字,速度,最大速度,最大倒退速度,最大轉(zhuǎn)彎速度和方向。我們也需要加速,減速,轉(zhuǎn)彎的函數(shù)。
public interface IVehicleModel
{
string Name{ get; set;}
int Speed{ get; set;}
int MaxSpeed{ get;}
int MaxTurnSpeed{ get;}
int MaxReverseSpeed { get;}
AbsoluteDirection Direction{get; set;}
void Turn(RelativeDirection paramDirection);
void Accelerate(int paramAmount);
void Decelerate(int paramAmount);
}
最后,我們來整理View接口。我們知道View需要暴露出Control的一些機能,比如允許或禁止加速,減速和轉(zhuǎn)彎申請。
public interface IVehicleView
{
void DisableAcceleration();
void EnableAcceleration();
void DisableDeceleration();
void EnableDeceleration();
void DisableTurning();
void EnableTurning();
}
現(xiàn)在我們需要做一些微調(diào)使我們的這些接口能夠互相作用。首先,任何一個Control都需要知道它的View和Model,所以在我們的IvehicleControl接口中加入兩個函數(shù):"SetModel" 和"SetView":
public interface IVehicleControl
{
void RequestAccelerate(int paramAmount);
void RequestDecelerate(int paramAmount);
void RequestTurn(RelativeDirection paramDirection);
void SetModel(IVehicleModel paramAuto);
void SetView(IVehicleView paramView);
}
下一個部分比較巧妙。我們希望View知道Model中的變化。為了達到這個目的,我們使用觀察者模式。
所以我們要做三個接口(正如你所猜測,一個Model接口,一個View接口,一個Control接口)。
經(jīng)過很多調(diào)查研究,和與ACME人的費力咨詢,我們得到了很多有關(guān)詳細設計的信息。我們想確定我們可以設置的最大速度在前進,后退和轉(zhuǎn)彎中。我們也需要能夠加速,減速,左轉(zhuǎn)和右轉(zhuǎn)。我們的儀表盤必須顯示當前的速度和方向。
實現(xiàn)所有這些需求是非常苛刻的,但是我們確信我們能夠做到...
首先,我們考慮一下基本的項目。我們需要一些東西來表示方向和轉(zhuǎn)動請求。我們做了兩個枚舉類型:AbsoluteDirection 和 RelativeDirection。
public enum AbsoluteDirection
{
North=0, East, South, West
}
public enum RelativeDirection
{
Right, Left, Back
}
下面來解決Control接口。我們知道Control需要將請求傳遞給Model,這些請求包括:Accelerate, Decelerate, 和 Turn。我們建立一個IVehicleControl接口,并加入適當?shù)姆椒ā?br />
public interface IVehicleControl
{
void Accelerate(int paramAmount);
void Decelerate(int paramAmount);
void Turn(RelativeDirection paramDirection);
}
現(xiàn)在我們來整理Model接口。我們需要知道汽車的名字,速度,最大速度,最大倒退速度,最大轉(zhuǎn)彎速度和方向。我們也需要加速,減速,轉(zhuǎn)彎的函數(shù)。
public interface IVehicleModel
{
string Name{ get; set;}
int Speed{ get; set;}
int MaxSpeed{ get;}
int MaxTurnSpeed{ get;}
int MaxReverseSpeed { get;}
AbsoluteDirection Direction{get; set;}
void Turn(RelativeDirection paramDirection);
void Accelerate(int paramAmount);
void Decelerate(int paramAmount);
}
最后,我們來整理View接口。我們知道View需要暴露出Control的一些機能,比如允許或禁止加速,減速和轉(zhuǎn)彎申請。
public interface IVehicleView
{
void DisableAcceleration();
void EnableAcceleration();
void DisableDeceleration();
void EnableDeceleration();
void DisableTurning();
void EnableTurning();
}
現(xiàn)在我們需要做一些微調(diào)使我們的這些接口能夠互相作用。首先,任何一個Control都需要知道它的View和Model,所以在我們的IvehicleControl接口中加入兩個函數(shù):"SetModel" 和"SetView":
public interface IVehicleControl
{
void RequestAccelerate(int paramAmount);
void RequestDecelerate(int paramAmount);
void RequestTurn(RelativeDirection paramDirection);
void SetModel(IVehicleModel paramAuto);
void SetView(IVehicleView paramView);
}
下一個部分比較巧妙。我們希望View知道Model中的變化。為了達到這個目的,我們使用觀察者模式。
轉(zhuǎn)載于:https://www.cnblogs.com/lotussoft/archive/2009/08/27/1555435.html
總結(jié)
以上是生活随笔為你收集整理的C#实现MVC模式简要方法(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript文本框的操作
- 下一篇: 不同项目之间的控件共享