「デザインモード」のデコレーションモード
2663 ワード
装飾器モード
装飾器モードには主に二つのキャラクターがあります。装飾器(ジャケット、帽子) 装飾された対象(王さん) 装飾器と装飾された対象は二つの特徴があり、装飾器のモードのキーでもあります。彼らは同じインターフェースを実現します。 装飾器には、装飾されたオブジェクト が使用されている。
使用:
ソースの住所:https://github.com/java-aoden...
この文章は控えめなパンダの1文から多く操作して発表します!いらっしゃいませ、公衆番号:低調のレッサーパンダ
装飾器モードには主に二つのキャラクターがあります。
使用:
/**
*
*
*
*
* @author aodeng-
* @since 19-7-11
*/
public interface Person {
/**
*
* @return
*/
public Double cost();
/**
*
*/
public void show();
}
/**
*
* ( )
*
*
* @author aodeng-
* @since 19-7-11
*/
public class LaoWang implements Person{
@Override
public Double cost() {
// , 0
return 0.0;
}
@Override
public void show() {
System.out.println(" "+this.cost());
}
}
/**
*
* , Person :
*
*
* @author aodeng-
* @since 19-7-11
*/
public abstract class ClothesDecorator implements Person{
/**
* ,
*/
protected Person person;
public ClothesDecorator(Person person){
this.person=person;
}
}
/**
*
* ,
*
*
* @author aodeng-
* @since 19-7-11
*/
public class Jacket extends ClothesDecorator{
public Jacket(Person person){
/**
* super ( )
*/
super(person);
}
@Override
public Double cost() {
//
return person.cost()+100;
}
@Override
public void show() {
person.show();
System.out.println(" 100, "+this.cost());
}
}
/**
*
* ,
*
*
* @author aodeng-
* @since 19-7-11
*/
public class Hat extends ClothesDecorator{
public Hat(Person person){
// ( )
super(person);
}
@Override
public Double cost() {
return person.cost()+200;
}
@Override
public void show() {
person.show();
System.out.println(" 200, "+this.cost());
}
}
テスト/**
*
*
*
*
* @author aodeng-
* @since 19-7-11
*/
public class LearnMain {
public static void main(String[] args) {
//
Person laoWang=new LaoWang();
//
laoWang=new Jacket(laoWang);
//
laoWang=new Hat(laoWang);
laoWang.show();
/*
:
0.0
100, 100.0
200, 300.0*/
}
}
ソースソースの住所:https://github.com/java-aoden...
この文章は控えめなパンダの1文から多く操作して発表します!いらっしゃいませ、公衆番号:低調のレッサーパンダ