デザインモード学習シリーズ(二)StrategyモードとBridgeモード
Strategyパターン定義:
一連のアルゴリズムを定義して、それらを一つずつカプセル化して、それらの間を相互に置き換えることができます.Strategyは、アルゴリズムをそれらの顧客の変化を利用して独立して変化させることができるようにする.
プログラマの理解によれば、「抽象的なクラスで抽象的な方法を定義し、異なるサブクラスでこの方法を実現して、アルゴリズム分離を実現します.もちろん、インターフェースを定義してもいいです.このインターフェースを実現するためには、さまざまな種類からアルゴリズム分離を実現します.」
生活の中でも多くの例があります.例えば、「製造業では、製造部品には必ず完全な基準があります.各メーカーはこの基準に従って部品を生産しなければなりません.そうでなければ、生産部品は廃品です」
コードの例:
Bridgeパターン定義:
抽象をそれによって結合を実現し,彼らを独立に変化させる.
あるクラスに新しい方法を追加するには、まずインターフェースを定義し、このインターフェースに対応する方法を定義して、このようなインターフェースを実現させて目的を達成させ、サブクラスを使用して父類を継承する方式に反対する利点は、種類が多すぎることを避けることです.「
これはサンプルコードを与えません.分かりやすく話します.
一連のアルゴリズムを定義して、それらを一つずつカプセル化して、それらの間を相互に置き換えることができます.Strategyは、アルゴリズムをそれらの顧客の変化を利用して独立して変化させることができるようにする.
プログラマの理解によれば、「抽象的なクラスで抽象的な方法を定義し、異なるサブクラスでこの方法を実現して、アルゴリズム分離を実現します.もちろん、インターフェースを定義してもいいです.このインターフェースを実現するためには、さまざまな種類からアルゴリズム分離を実現します.」
生活の中でも多くの例があります.例えば、「製造業では、製造部品には必ず完全な基準があります.各メーカーはこの基準に従って部品を生産しなければなりません.そうでなければ、生産部品は廃品です」
コードの例:
public interface Name{
public String getName();
}
public class rnx implements Name{
public String getName(){
return "rnx";
}
}
public class wangwei implements Name{
public String getName(){
return "wangwei";
}
}
public class Test{
public static void main(String[] args){
// Name
/*
Object obj=getObj();
if(obj instanceof rnx){
rnx r=(rnx)obj;
r.getName();
}else if(obj instanceof wangwei){
wangwei w=(wangwei)obj;
w.getName();
}
*/
// Name
Name name=getObj();
name.getName();//
}
}
Strategyモードはjavaでも多く使われています.例えばSwingでイベントモニターなどです.Bridgeパターン定義:
抽象をそれによって結合を実現し,彼らを独立に変化させる.
あるクラスに新しい方法を追加するには、まずインターフェースを定義し、このインターフェースに対応する方法を定義して、このようなインターフェースを実現させて目的を達成させ、サブクラスを使用して父類を継承する方式に反対する利点は、種類が多すぎることを避けることです.「
これはサンプルコードを与えません.分かりやすく話します.