デコレーターは、「装飾」と翻訳されています。これらの2つのエンティティは、デコレーターモードで必要です。
デコレーターの定義:壁を塗るなど、オブジェクトにいくつかの追加の責任を動的に追加します。デコレータモードの使用は、サブクラスの生成を使用して機能的拡張を実現するよりも柔軟です。
なぜデコレーターを使用するのか
通常、継承を使用して機能拡張を実現できます。これらの拡張機能を予測する必要があります。これらの関数はコンパイル時に決定され、静的です。
デコレーターを使用する理由は、これらの関数をユーザーが参加するために動的に決定する必要があることです。デコレーターは、ランタイム中にいつ機能を追加するかを決定するための「プラグアンドプレイ」方法を提供します。
装飾モードの使用方法
アダプターには2種類の杭があります。掘るなどのドライビングパイル。
最初にインターフェイスを作成しましょう:
コードコピーは次のとおりです。
パブリックインターフェイスワーク{
public void insert();
}
インターフェイスワークには、特定の実装があります。四角い杭または円形の違いはありません。正方形の山の挿入を例として取りましょう。
コードコピーは次のとおりです。
パブリッククラスのSquarepegは作業を実装しています{
public void insert(){
System.out.println( "四角いパイル挿入");
}
}
現在、穴を掘り、穴を掘った後、これらの追加機能が動的であることがありますパイルが駆動された後にラックを釘付けするために必要になる場合があります(ただの比phor)。
次に、正方形の山の四角い角が洞窟(塗料で塗装)であるデコレータモードを使用し、洞窟に「塗料」をペイントする必要があります。これらの塗料はそれらの特別な機能です。
コードコピーは次のとおりです。
パブリッククラスのデコレーターは作業を実装しています{
プライベートワークワーク;
//追加の機能はこのリストにパッケージ化されています
private arrayList others = new ArrayList();
//コンストラクターに組み合わせた新しいメソッドを使用して、作業オブジェクトを導入します。
パブリックデコレーター(ワークワーク){
this.work = work;
その他。
その他。Add( "ネイルボード");
}
public void insert(){
newmethod();
}
//新しい方法では、挿入前に他の方法を追加します。ここの注文はユーザーによって柔軟に指定されます
public void newmethod(){
othermethod();
work.insert();
}
public void othermethod(){
listiterator listiterator = others.listiterator();
while(listiterator.hasnext()){
system.out.println(((string)(listiterator.next())) + "in progress");
}
}
}
上記の例では、パイルインサートの前に掘る穴と釘付けボードの両方をランク付けしました。
わかりました、デコレーターモードが外出しています、それを呼び出す方法を見てみましょう:
コードコピーは次のとおりです。
squarepeg = new squarepeg();
ワークデコレーター=新しいデコレーター(Squarepeg);
decorator.insert();
デコレーターモードはここで完成しています。
注意している場合は、上記の呼び出しがファイルを読むときに読んだ呼び出しに似ていることがわかります。
コードコピーは次のとおりです。
filreader fr = new fileReader(filename);
BufferedReader br = new BufferedReader(FR);
実際、JavaのI/O APIは、すべての継承方法が採用されている場合、多くのサブクラスが生成されます。
Jiveでのデコレーターの実装
フォーラムシステムでは、一部の特殊文字はフォーラムに「xxx with down」など、これらの「反動的な」フォントをフィルタリングする必要があります。それらを見せたり、高輝度で表示したりしないでください。
IBM JavaコラムのJiveについて特に話している記事では、Jiveのforummessagefilter.javaは実際にはデコレーターを使用していませんが、追加のフィルタリング関数は特別なフォーラム向けに設計できると促しました。 、その後、decoratorモードとしてForummessageFilterを再編成できます。
したがって、それが実際にデコレーターモードであり、実際にデコレーターモードを使用するかどうかを決定している場合、デコレーターモードと関連する役割(装飾とデコレーター)の定義を把握する必要があります。