有用的迷你图案(不是设计图案)

Mat*_*ren 2 .net c# design-patterns idioms

我最常用的迷你图案是:

VideoLookup = new ArrayList  { new ArrayList { buttonVideo1, "Video01.flv" },
                               new ArrayList { buttonVideo2, "Video02.flv" },
                               new ArrayList { buttonVideo3, "Video03.flv" }, 
                               new ArrayList { buttonVideo4, "Video04.flv" },
                               new ArrayList { buttonVideo4, "Video04.flv" }
                             };
Run Code Online (Sandbox Code Playgroud)

这意味着,不是每个按钮都有一个case的switch语句,而是只需将单击的按钮与ArrayList中的每个项目进行比较.然后,当我找到匹配时,我启动了正确的文件(尽管第二部分"查找"的操作可能是委托或其他任何事情).

主要的好处是我没有记住为每个switch语句添加所有正确代码的问题,我只是在查找ArrayList中添加一个新项.

(是的,我知道使用ArrayList不是最好的方法,但它是旧的代码.而且我知道每次循环遍历数组不如使用switch语句那么高效,但是此代码不在紧环)

是否有其他人使用任何迷你图案可以节省时间/精力或使代码更具可读性?它们不必仅与GUI相关.

更新:不要复制这段代码,我知道这很糟糕,但我没有意识到有多糟糕.请改用这样的东西.

Hashtable PlayerLookup = new Hashtable();
PlayerLookup.Add(buttonVideo1, "Video01.flv");
PlayerLookup.Add(buttonVideo2, "Video02.flv");
PlayerLookup.Add(buttonVideo3, "Video03.flv");
PlayerLookup.Add(buttonVideo4, "Video04.flv");

string fileName = PlayerLookup[currentButton].ToString();            
Run Code Online (Sandbox Code Playgroud)

Jim*_*mmy 5

请请使用此版本.

VideoLookup = new Dictionary<Button, string> {
    { buttonVideo1, "Video01.flv" },
    { buttonVideo2, "Video02.flv" },
    { buttonVideo3, "Video03.flv" }, 
    { buttonVideo4, "Video04.flv" },
    { buttonVideo4, "Video04.flv" }
};
Run Code Online (Sandbox Code Playgroud)