首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 實作 MVC 模式簡要方法(六):完整驗證與擴充展示 — 卡車、限速控制器、Web 介面

     編輯:關於C語言

IVehicleView 介面實作 (AutoView 節錄)


public void DisableAcceleration() => btnAccelerate.Enabled = false;
public void EnableAcceleration()  => btnAccelerate.Enabled = true;
public void DisableDeceleration() => btnDecelerate.Enabled = false;
public void EnableDeceleration()  => btnDecelerate.Enabled = true;
public void DisableTurning()      => btnRight.Enabled = btnLeft.Enabled = false;
public void EnableTurning()       => btnRight.Enabled = btnLeft.Enabled = true;

public void Update(IVehicleModel model) => UpdateInterface(model);

MVC 鬆耦合威力展示:零修改現有代碼新增車種


// 新模型:卡車
public class ACME2000Truck : Automobile
{
    public ACME2000Truck(string name) : base(80, 25, -12, name) {}
    public ACME2000Truck(string name, int maxSpeed, int maxTurn, int maxRev) 
        : base(maxSpeed, maxTurn, maxRev, name) {}
}

AutoView 僅需一行變更即可使用新模型:


autoView1.WireUp(new AutomobileControl(), new ACME2000Truck(txtName.Text));

新增控制器變體:限速控制器 (每次加減速上限 5 mph)


public class SlowPokeControl : IVehicleControl
{
    public void RequestAccelerate(int amount)
    {
        if (Model != null)
        {
            amount = Math.Min(amount, 5);
            Model.Accelerate(amount);
            View?.SetView();
        }
    }
    public void RequestDecelerate(int amount)
    {
        if (Model != null)
        {
            amount = Math.Min(amount, 5);
            Model.Decelerate(amount);
            View?.SetView();
        }
    }
    // ... RequestTurn 同 AutomobileControl
}

組合使用:autoView1.WireUp(new SlowPokeControl(), new ACME2000Truck(...)) — **模型與控制器自由組合**。

Web 介面移植

建立 ASP.NET 專案,實作 IVehicleView 介面的 UserControl,其餘模型/控制器**完全重用**,零修改。

結論

MVC 將模型、視圖、控制器三者解耦,任一層變更不波及其他層。支援:多模型 (跑車/卡車)、多控制器 (標準/限速)、多視圖 (WinForms/Web/WPF) **自由組合**,極大降低維護成本並提升擴充彈性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved