Implement State of View

平時寫介面(GUI), 通常會寫一個 method 叫 StateChange 黎處理所有介面上既所有 visible 同 enable 既動作. 而自己會因介面既設計而定義一個 private enum 既 State, 所有 state 由一個 method 做晒.

private enum State
{
    Add,
    Update
}

private void StateChange(State eState)
{
    if (eState == State .Add)
    {
        txtId.Visible = true;
        lblId.Visible = false;
        lblMode.Text = "[Add New]";
    }

    if (eState == State .Update)
    {
        txtId.Visible = false;
        lblId.Visible = true;
        lblMode.Text = "[Update]";
    }
}

而我自己寫過既 State 都有幾隻:
同一版有個所有 Item 既 List 而 Edit box 得 Add 同 Update

private enum State
{
    Add,
    Update
}

一版得主要係用黎 Insert 既:

private enum State
{
    WaitingSave,
    WaitingConfirm    // for double confirm
}

同埋得睇同改既:

private enum State
{
    Normal,
    Edit    // for add and update
}

仲有好多其他既 State 寫過, 不過都太過多同太專門, 所以應該係按照實際用途而加.

網上曾經見過有人用 State object 同 State Pattern 黎做, 對我而言好似用係 GUI 方面未必真係有咁既需要, 但對一個 domain object 而言就最好有 State object, 咁樣會對個 design 好好多.

Tags:

Leave a Reply

You must be logged in to post a comment.