有用なミニパターンのないデザインパターン)
-
23-08-2019 - |
質問
私のもっとも多く使用されているミニパターン:
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" }
};
これによりスイッチの決算の場合の各ボタンできなだけを比較し、ボタンをクリックされた各項目のArrayList.それがその場で発音を確認することが、試合で重要であると実感しながら開始し、正しいファイルがアクションの第2部の"ルックアップ"が代表であるようにします。
主なメリットはないの問題を思い出をすべて追加のコードの各スイッチの算書の場合、新しい商品のルックアップ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();
解決
すことができるのかをやstructオブジェクトボタンをタ参照を表す文字列をファイル名として表れます。やることができ用辞書を待機させることができるので、とします。多くの方法を改善します。:)
他のヒント
※omgこのバージョン。
VideoLookup = new Dictionary<Button, string> {
{ buttonVideo1, "Video01.flv" },
{ buttonVideo2, "Video02.flv" },
{ buttonVideo3, "Video03.flv" },
{ buttonVideo4, "Video04.flv" },
{ buttonVideo4, "Video04.flv" }
};
のスイッチは、このようなものにするいくつかの
public Object createSomething(String param)
{
return s == null ? new NullObject() :
s.equals("foo") ? new Foo() :
s.equals("bar") ? new Bar() :
s.equals("baz") || s.equals("car") ? new BazCar() :
new Object();
}
と思うので読みやすくする工夫して通常のスイッチ諸表においてより複雑ならない。ああ、まだ遅くなることが必要なものを比較し、各条件が99%の時にはどちらでも構いません。
Javaでは、私が個室内を実装するクラスは、公開インタフェースでもオブジェクトの密な結合。私はこのミニレータの熟議論の文脈で作成UiとアレンHolubの 視覚代行 建築でもない。どんな名称を定義してください。
例えば、例えばコレクションを持たインタフェースを提供できる反復子:
public interface Collection
{
...
public Iterator iterate();
}
public interface Iterator
{
public boolean hasNext();
public Object next();
}
またスタックを実装した収集、その実施がその反復子として民間の内部クラス:
public class Stack implements Collection
{
...
public Iterator iterate()
{
return new IteratorImpl();
}
private class IteratorImpl implements Iterator
{
public boolean hasNext() { ... }
public Object next() { ... }
}
}
スタックです。IteratorImplは完全にアクセスすべてのスタックの方法。同時に、スタックです。IteratorImplは目に見えないすべての以外のスタックです。
スタックとその反復子が強く結合.最悪の場合、実行スタックの反復子としてのpublicクラスが込みスタックの封止.民間の内部クラスきは避けます。もしかしたらす汚染することなくクラス階層というのは、とても本当に実装です。
前回の私の仕事に書いた、C#のEnforcements概念を導入したC++によるアAlexandrescuとPetru Marginean(原文はここ).
このとっても良い感じででき草が絡み合い織りなすエラー処理または状態をチェック通常のコードが破損することなく、フロー例:
string text = Enforce.NotNull( myObj.SomeMethodThatGetsAString(), "method returned NULL" );
これが最初の引数がnullの場合、スロー、EnforcementException二番目の引数としてのメッセージの場合は、最初の引数です。が過負荷になる文字列のフォーマットのパラメータも、過負荷になるように指定し、異なる例外タイプです。
きことはこのようなものが関連するクライアントまで、フルのC#での実行時のチェックを得ることができ、ていねが、このムーチに近い源に関する情報提供の充実に努め、残りの表現.
同一のシステムのための事前-事後の状態をチェックしている。
私が書オープンソース版をリンクします。
きん地点コード高速納期-!期限を!いたためにstackoverflow.com?納期!), 巻いこのようなコード:
Button1.Click += (o,e) => { DoSomething(foo); };
この原因は私にメモリリークの一部ですか?やっぱり分からないね!これにふさわしい質問です。Ack!期限を!
Windows formsんが頻繁に使用するタグの分野に入れpsuedo-コマンド文字列ができるようにはシングルイベントハンドラのための共有設定のボタンを押します。この作品は、特にボタンと同様のものがパラメータ化します。
お初の例では、タグを設定し、ボタンと同じ名前のファイルならルックアップが必要です。
用途において何らかのテキストコマンドプロセッサのための派遣など、タグが文字列だけを供給し、コマンドプロセッサー作品は素敵です。
(ちなみ:見ているが、"音"をテーマに、ミニパターンに...)
新しい音といったクライアントまで、フルのC#の利用開閉式のパラメータを封止一部の設定や設定の方法を必要とすることができます。このように制御を行うことができ、相対的にそのコード実行の確かな方法です。
これを入れ子により閉マルタンファウラー: http://www.martinfowler.com/dslwip/NestedClosure.html
それでよいということ(vbEx2005/.Net2.0)もがその場で発音を確認することがで便利なクラスの汎用delegate-クリエイターを受け入れる方法の一部のパラメータの値のいずれか、または全てが一つのパラメータは、利回りの委員は、呼び出した場合は、電話、指定された機能を指定されたパラメータ。とは異なりParamArrayに基づくもののようにParameterizedThreadStartもので安全です。
例えば、あえて言えば:
Sub Foo(param1 As Integer, param2 As String) ... End Sub ... Dim theAct as Action(of Integer) = _ ActionOf(of Integer).NewInv(AddressOf Foo,"Hello there") theAct(5) ...
その結果、コFoo(5、"いこんにちはをありのままオブジェクトがFoo宣言しています。残念ながら、私として別途汎用クラスとメソッド毎に異なる番号のパラメータにしたいインターネットで提供さではお勧めのすべてのカット-ペーストのファイルによって追加のコードが随所に適します。