女神穿衣打扮之裝飾模式

從女神的穿衣打扮看裝飾模式java

如何穿反映一我的的品味,女神去約會,如何穿衣打扮呢?this

你須要考慮如下幾個問題!code

一、首先上身穿什麼?下身穿什麼?是須要思考的問題!繼承

二、女神想去海邊沙灘享受一下日光浴,下身至少穿個內內,上身戴個胸罩便可,再少屌絲們就會流鼻血了。。。接口

三、有了基礎的比基尼裝扮,外面再怎麼穿,就是一層層的裝飾了。ip


不管怎麼穿,全身都要穿東西的,咱們分爲上身和下身。 咱們定義一個接口來規範必須上身下身都穿衣服get

package design.pattern.decorator;

/**
 *  女神穿衣服
 * @author  SB
 *
 */
public interface GoddessDress {
	//穿上身衣服
    public void  dressUp();
    //穿下身衣服
    public void  dressDown();
}

裝飾在必定的基礎之上,首先簡單穿上小內內戴上胸罩:class

package design.pattern.decorator;

public class SimpleDress  implements  GoddessDress{
   public void  dressUp(){
	   // 簡單穿胸罩
	   System.out.print("  簡單穿胸罩 ");
   }
   
   public void  dressDown(){
	   //簡單穿小內內
	   System.out.print("  簡單穿小內內  ");
   }
}

不管什麼衣服,都須要上身下身都進行裝飾,不斷的去裝飾打扮!不管怎麼穿,都須要再上一次穿着的基礎上進行,因此須要拿到上次的穿着打扮,女神不管目前穿什麼,你都可以繼續在此基礎上進行穿衣打扮!女神當前任意穿着都可以進行裝飾,因此:你須要實現穿衣的接口:基礎

package design.pattern.decorator;

public abstract class  DressDecorator  implements  GoddessDress{
   //首先要有給女神裝飾的權利
   private  GoddessDress      goddessDress;
   

   public DressDecorator(GoddessDress goddessDress){
	   this.goddessDress = goddessDress;
   }
   
   //女神上身穿
   public  void  dressUp(){
	   goddessDress.dressUp();
   }
   //女神下身穿
   public void  dressDown(){
	   goddessDress.dressDown();
   }
}

以上是裝飾的方式,之後不管什麼配套衣服均可以繼承它進行穿着。im

好比上身穿個夾克,下身穿個絲襪:

package design.pattern.decorator;

/**
 * 穿夾克絲襪
 * @author SB
 *
 */
public class JacketStockingsDecorator  extends DressDecorator{
   
	
   public  JacketStockingsDecorator(GoddessDress  goddessDress){
          super(goddessDress);
     }
   
   public   void  dressUp(){
	   super.dressUp();
	   dressJacket();
   }
   
   public void  dressJacket(){
	   //穿夾克
	   System.out.print("  穿夾克  ");
   }
   
   public void dressDown(){
	   super.dressDown();
	   dressStockings();
   }
   
   public void  dressStockings(){
	   //穿絲襪
	   System.out.print("  穿絲襪  ");
   }
   
}

或者上身穿個風衣,下身穿個緊身褲:

package design.pattern.decorator;

public class WindbreakLeggingsDecorator  extends  DressDecorator {
	
	public  WindbreakLeggingsDecorator(GoddessDress  goddessDress){
		     super(goddessDress);
	}
	
	
	public void dressUp(){
		super.dressUp();
		dressWindbreak();
	}
	
	public void  dressWindbreak(){
		//穿風衣
		System.out.print("  穿風衣   ");
	}
	
	public void  dressDown(){
		super.dressDown();
		dressLeggings();
	}
	
	public void  dressLeggings(){
		//穿緊身褲
		System.out.print("  穿緊身褲 ");
	}
}

下面隨便搭配一下,看看女神裝飾的怎麼樣

package design.pattern.decorator;

public class GoddessDressTest {
  
	public static void main(String[] args) {
		
	GoddessDress    goddessDress = new WindbreakLeggingsDecorator(new JacketStockingsDecorator(new  SimpleDress()));
		
		System.out.println("女神上身穿着:");
		 goddessDress.dressUp();
		
		 System.out.println();
		 
		 System.out.println("女神下身穿着:");
		 goddessDress.dressDown();
		 
		
	}
}

一展風采

女神上身穿着:
  簡單穿胸罩   穿夾克    穿風衣   
女神下身穿着:
  簡單穿小內內    穿絲襪    穿緊身褲

以上女神的穿衣打扮就完成了!裝飾者模式就是這樣的。在JDK中,IO包下流的相關處理就是採用這種裝飾者模式。抽時間結合看看。

要點

一、DressDecorator這個類很重要,首先要有給女神裝飾的權利,而後纔會在女神身上進行裝飾。 二、super(goddessDress);是獲取女神裝飾的權利,super.dressUp(); super.dressDown();表明在女神現有的穿着的基礎上進行裝飾。 三、SimpleDress 對女神進行簡單裝飾,裝飾的基礎。


reference

相關文章
相關標籤/搜索