markdownコピーのソースコードの貼り付けをテストする
3916 ワード
前言
装飾モードは包装モードとも呼ばれ、字の通り、一つのものを包装し、いくつかの修飾物を増やし、動的に一つの対象に追加の非難を加えることである.
これには装飾モードが使われており、新しい方法は修飾の役割を果たすことです.
これは明らかで、動的にクラスを拡張する方法が必要で、総合的に分析して、誰がもっと適しているかを継承して装飾する必要があります.
Component:抽象コンポーネント、インタフェースでも抽象クラスでも装飾の元のオブジェクトです.ConcreteComponent:コンポーネントクラスの実装クラスは、基本実装であり、実際には具体的なオブジェクトである.Decorator:元のオブジェクトを装飾する抽象的な装飾クラス.1つの具体的な実装クラスのみの場合,この抽象クラスは省略できる.ConcreteDecorator:装飾者の具体的な実現類は、抽象的な口実の具体的な実現にすぎない.
単純なプロセスを抽象化します.プロジェクトグループには2人のプロダクトマネージャがあり、その後、いくつかのプログラマーがいます.次に、プロジェクト開発が終了するまでのプロセスを説明します.まず、Componentを抽象化します.
それから携帯電話の製品マネージャー、問題を際立たせるために私達は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);
}
//***データのロード*/private void initDate(){Project coder=new Coder();//コードワーカーProject managerA=new ManagerA(coder);//プロジェクトマネージャProject PromanagerB=new ManagerB(coder);//プロジェクトマネージャ
}
/***初期化インタフェース*/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 }
“`
これでシンプルなデコレーションモードが完成.
装飾者モードは継承関係に代わってプログラム構造を簡素化し、その装飾のオブジェクト強化機能のためにエージェントモードと混同される可能性があるが、エージェントモードはエージェントのオブジェクトに対して制御を完了するが、自身の機能を強化することはない.
装飾モードは包装モードとも呼ばれ、字の通り、一つのものを包装し、いくつかの修飾物を増やし、動的に一つの対象に追加の非難を加えることである.
```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 }
“`
これでシンプルなデコレーションモードが完成.
後記
装飾者モードは継承関係に代わってプログラム構造を簡素化し、その装飾のオブジェクト強化機能のためにエージェントモードと混同される可能性があるが、エージェントモードはエージェントのオブジェクトに対して制御を完了するが、自身の機能を強化することはない.