markdownコピーのソースコードの貼り付けをテストする

3916 ワード

前言
装飾モードは包装モードとも呼ばれ、字の通り、一つのものを包装し、いくつかの修飾物を増やし、動的に一つの対象に追加の非難を加えることである.
```java 
@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
super.onActivityCreated(savedInstanceState); 
initView(); 
initTitle(); 
initData(); 
initOnClickListener(); 
((BaseActivity) this.getActivity()).setCurrentVisiableFragment(this); 
} 

これには装飾モードが使われており、新しい方法は修飾の役割を果たすことです.

適用シーン


これは明らかで、動的にクラスを拡張する方法が必要で、総合的に分析して、誰がもっと適しているかを継承して装飾する必要があります.

コスプレ


Component:抽象コンポーネント、インタフェースでも抽象クラスでも装飾の元のオブジェクトです.ConcreteComponent:コンポーネントクラスの実装クラスは、基本実装であり、実際には具体的なオブジェクトである.Decorator:元のオブジェクトを装飾する抽象的な装飾クラス.1つの具体的な実装クラスのみの場合,この抽象クラスは省略できる.ConcreteDecorator:装飾者の具体的な実現類は、抽象的な口実の具体的な実現にすぎない.

Demo


単純なプロセスを抽象化します.プロジェクトグループには2人のプロダクトマネージャがあり、その後、いくつかのプログラマーがいます.次に、プロジェクト開発が終了するまでのプロセスを説明します.まず、Componentを抽象化します.
java 
package com.demo.decorator;

/** 
* Created by italkbb on 2017/12/29. 
*/

public abstract class Project { 
/** 
* Project  
*/ 
public abstract void doWork(); 
}


  ConcreteComponent: 
java 
package com.demo.decorator;

/** 
* Created by italkbb on 2017/12/29. 
*/

public class Coder extends Project { 
@Override 
public void doWork() { 
doCoding(); 
}

private void doCoding() {
    System.out.println(" ");
}
1
2
3
4
} 

それから携帯電話の製品マネージャー、問題を際立たせるために私達は2つの製品マネージャーを書きます:``java package com.demo.decorator;
/** * Created by italkbb on 2017/12/29. */
public abstract class Manager extends Project { private Project projcet;
public Manager(Project projcet){ this.projcet = projcet; } @Override public void doWork() { earlyWork(); projcet.doWork(); endWork(); }
/***管理者は符号化前に必要とする*/protected abstract void earlyWork()
/***管理者は符号化後に終了作業を行う*/protected abstract void endWork();1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 }
“`
具体的な実装クラス(ConcreteDecorator):
“`java package com.demo.decorator;
/** * Created by italkbb on 2017/12/29. */
public class ManagerA extends Manager { public ManagerA(Project projcet) { super(projcet); }
@Override protected void earlyWork(){System.out.println("マネージャAが需要分析を行う");System.out.println("マネージャAがプロジェクトフレームワークを探す");System.out.println("マネージャA詳細設計");
@Override protected void endWork() {
} 1 2 3 4 5 6 7 8 9 10 11 12 }
“`
“`java package com.demo.decorator;
/** * Created by italkbb on 2017/12/29. */
public class ManagerB extends Manager { public ManagerB(Project projcet) { super(projcet); }
@Override protected void earlyWork() {
}
@Override protected void endWork(){System.out.println("マネージャBが最後の仕事をする");1 2 3 4 5 6 7 8 9 10 }
“`
後期にはactivity装飾モードで私たちのdemoを使用します.
“`java package com.demo.decorator;
import android.os.Bundle; import android.support.v7.app.AppCompatActivity;
import teltplay.example.com.kotlindemo.R;
public class DecoratorActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
initDate();

initView();

}
//***データのロード*/private void initDate(){Project coder=new Coder();//コードワーカーProject managerA=new ManagerA(coder);//プロジェクトマネージャProject PromanagerB=new ManagerB(coder);//プロジェクトマネージャ
//  
managerA.doWork();
managerB.doWork();

}
/***初期化インタフェース*/private void initView(){setContentView(R.layout.activity_decorator);1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 }
“`
これでシンプルなデコレーションモードが完成.

後記


装飾者モードは継承関係に代わってプログラム構造を簡素化し、その装飾のオブジェクト強化機能のためにエージェントモードと混同される可能性があるが、エージェントモードはエージェントのオブジェクトに対して制御を完了するが、自身の機能を強化することはない.