私は以下のパターンが戦略パターンに適していると思っていますが、それが正しいかどうか、もしそうなら、適切に実装する方法がわかりません。コード臭 - どのデザインパターンと実装方法?
カテゴリと並べ替えを受け入れる方法があります。現在、カテゴリーやソートが列挙型であるため、このような何か:
public enum Category{
Hot,
New
}
public enum Sort{
New,
Rising,
ThisWeek
}
public String getUrl(Category category, Sort sort){
validateCategorySortCombo(category, sort);
}
お知らせvalidateCategorySortCombo(カテゴリ、ソート)。まず、カテゴリ+ソートの組み合わせ を有効にする必要があります。一部は無効です。例:
if(Category == "Hot" && Sort == "Rising"){
ThrowInvalidCategorySortCombo("Can't use hot category with rising sort")
}
これらの組み合わせが有効であることを確認するためのチェックがいくつかあります。他のカテゴリや種類が導入されているので、私はこのクラスを開いて、開いた/閉じた原理を破るように修正しなければならないので、これはコードの臭いのようです。
2番目のコードの匂いは、カテゴリとソートの両方を調べて、渡されるURLを作成する必要があるときに発生します。現在、私は、switch文のシリーズを使用しています。新しいカテゴリと種類が導入されているよう
String url;
switch(category){
case Hot:
url += "www.site.com/hot/";
case New:
url += "www.site.com/new/";
}
switch(sort){
case New:
url += "?sort=rising";
case ThisYear:
url += "?sort=thisyear";
}
繰り返しますが、私はこのクラスを開き、switch文を更新しなければなりません。質問の
カップル:
- 何のデザインパターンは、私の問題を解決するために使用されるだろうか?
- デザインパターンの実装についてはどうすればよいですか?