女神穿衣打扮之装饰模式

从女神的穿衣打扮看装饰模式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

相关文章
相关标签/搜索