界面での[JavaでThiinking](C)学習自閉症方法

序文 -

この記事では、情報提供のみを目的とし、確かにそれで多くの間違っていると、行う個人的なメモの性質を整理するために学ぶことです。

(第IX章・インターフェース "Javaで思考")

  インタフェースは、抽象クラスのちょうどより純粋な形ではありません

 

 

テキスト -

  インターフェースは抽象クラスのちょうどより純粋な形ではない、彼の目標はそれよりもさらに高くなっています。例えば、「完全なデカップリング」と「多重継承

 

  最初はされて完全に分離され、あなたはクラスではなくインタフェースの動作方法限り、カップリングのいくつかの理解を持つようにしたいということ、そしてあなただけの、このクラスおよびそのサブクラスを使用することができます。

  プロセッサは、今、私たちは、名前()メソッドおよびprocess()メソッドを含むクラスを持っています。プロセッサ処理()メソッドを継承スプリッタとオーバーライドメソッドは、空の文字列Geqie分割に係る機能を実現します。

  適用において、Apply.process()メソッドは、(それがプロセッサから継承されている限り)プロセッサの任意のタイプを受け入れ、オブジェクトに適用するオブジェクトであり、その結果を印刷してもよいです。

クラスプロセッサ{
     パブリック文字列名(){
         リターンのgetClass()getSimpleName()。
    } 
    オブジェクト処理(オブジェクト入力){ 
        リターン入力; 
    } 
} 

クラススプリッタは延びプロセッサ{ 
    @Override 
    オブジェクト処理(オブジェクト入力){ 
        // TODO自动生成的方法存根
        戻り Arrays.toString(((String)を入力).splitを(」 " )); 
    } 
} 

パブリック クラスは、{適用
     パブリック 静的 ボイドプロセス(プロセッサP、オブジェクトS){ 
        System.out.printlnは("使用してプロセッサ" + p.name()); 
        System.out.println(p.process(S))。
    } 
    公共の 静的な文字列S =「私はあなたの赤ちゃんを愛し」パブリック 静的 ボイドメイン(文字列[]引数){ 
        工程(新しいスプリッタ()、S)。
    } 
}
継承コール

  ※このような例のように、この方法によると呼ばれる異なる挙動が異なるパラメータオブジェクトの伝道と、作成することができる戦略設計パターンをこのような方法は、固定された部分で実行されるアルゴリズムを含む、及び「戦略」セクションには変更が含ま。

  ※戦略が実行されるコードが含まれているオブジェクトにパラメータを渡すことです。ここでは、プロセッサは戦略です。

  しかし、これらはスプリッタの実装が焦点ではありません、フォーカスではありません。

  プロセッサの外観を覚えておいてください!それは鍵です!

次に、クラスの別のセット

パブリック クラス波形{ //     波形类
    プライベート 静的 長い数えます。
    民間 最終  長い ID =数++ ;
    パブリック文字列のtoString(){
         戻り "波形" + ID。
    } 
} 

クラスフィルター{ //     适配器类
    パブリック文字列名(){
         リターンのgetClass()getSimpleName()。
    } 
    オブジェクト処理(波形入力){ 
        リターン入力; 
    } 
} 

クラスの帯域が延びフィルター{// フィルタタイプ
    ダブル  lowCutoff、hightCutoff;
     公共バンドパス(ダブル   lowCutoff、ダブルhightCutoff){
         // TODO自動生成されたコンストラクタスタブ
        この .lowCutoff = lowCutoff;
         この .hightCutoff = hightCutoff; 
    } 
    @Override 
        オブジェクト処理(波形入力) { 
            // 方法スタブTODO自動生成された
            リターンINPUT; 
        } 
}
クラスの別のセット

  フィルタとプロセッサの観察は、彼女の2つの要素が同じインタフェースを持っています。あなたはミアン方法でApply.process(P、S)の静的を呼び出そう;,コンパイラは、プロセスを適用するプロンプトが表示されます(P、S)は適用されません。あなたはこの方法ではないですので、クラスに継承構造に適用されます。

  ※時にプロセッサにApply.process間の密結合()。

このインタフェースの使用が大幅に緩和カップルすることができ、今、私たちは、インターフェイスタイプのプロセッサを変更します

パブリック インターフェイスiProcessor { 
    文字列名(); 
    オブジェクト処理(オブジェクトINPUT); 
} 
パブリック クラス StringProcessor 実装iProcessor {
     公共の 静的な文字列S =「私の愛、あなたの赤ちゃん」;
     公共の 静的な 無効メイン(文字列[] args)を{
         // 自動的にTODO生成されたメソッド・スタブ 
        NewApply.process(新しい新しいスプリッタ()、S); 
    } 

    @Override 
    パブリック文字列名(){
         // メソッドTODO自動的に生成されたスタブは、
        戻りのgetClass()getSimpleName();. 
    } 

    @Override
    パブリックオブジェクト処理(オブジェクト入力){
         // メソッドスタブが自動的に生成されたTODOの
        戻りINPUT; 
    } 

} 
クラスNewApply {
     公共 静的 ボイドプロセス(プロセッサP、Sオブジェクト){ 
        するSystem.out.println( "使用して、プロセッサは、" + p.name ()); 
        のSystem.out.println(p.process(S)); 
    } 
} 

クラス NewSplitter 延びStringProcessor { 
    @Override 
    パブリックオブジェクト処理(オブジェクトINPUT){
         // メソッドTODO自動的に生成されたスタブを
        返す(((Arrays.toStringのString)をINPUT).split( "" ));
    } 
}
コードの表示

 

今、プロセッサはiProcessorへのインタフェースは、それがWavefformに適用されるか、でしょうか?

あなたは使用することができ、アダプタのデザインパターンを受け入れられたインターフェース(タイプ)を使用するには、アダプタを介して、アダプタを持っている、とあなたが必要とするインターフェイス(タイプ)を生成します。

パブリック クラス FilterAdapter 実装iProcessor { 
    フィルタF; 
    公共FilterAdapter(フィルタF){
         // TODO自動生成されたコンストラクタスタブ
        この .F = F;     //     だけfiterに適合渡さないであろう
    } 
    @Override 
    パブリック文字列名() {
         // 自動的に生成されたメソッドスタブTODO 
        リターンF.Name(); 
    } 

    @Override 
    パブリックオブジェクト処理(オブジェクト入力){
         // メソッドスタブが自動的に生成されたTODOの
        戻りf.process((波形)INPUT); 
    } 

}
アダプタ
パブリック クラスFilterProcessor { 

    公共 静的 ボイドメイン(文字列[]引数){
         // メソッドTODO自動的に生成されたスタブ 
        波形W = 新しい新しい波形(); 
        NewApply.process(新しい新しい FilterAdapter(新しい新しいバンドパス(3.0、4.0 ))、W)。
    } 

}
コール

あなたは、元を持っている、とあなたが必要とするインターフェースiProcessorオブジェクトを生成した入力フィルターアダプターを受け入れ、私たちはそう。

 

※アダプタは非常に実用的に見えるが、できるだけ彼女を使用していますが。あなたは過度の変換アダプタを使用するときは、設計が間違っているものではありません再考すべきです。

おすすめ

転載: www.cnblogs.com/YFEYI/p/12178798.html
おすすめ