从女神的穿衣打扮看装饰模式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 对女神进行简单装饰,装饰的基础。