装饰模式
Posted 酒皇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰模式相关的知识,希望对你有一定的参考价值。
装饰模式是指一个对象内部递归拥有自己一样的对象。不断对对象自己进行修饰,或者实现方法进行改造,就像圣诞树一层一层挂上不同的装饰品一样。
典型的常见的情况是linkList。还有输入输出流的文件流,字节流,字符流,缓冲流。
以下是一个简单的实现方法,主要作用于方法体中,产生连续调用的效果。
abstract class Shows { public Shows s; public void setS(Shows s) { this.s = s; } public void Show() { if(s!=null)s.Show(); System.out.println("什么都没穿"); } } public class Shoe extends Shows { public void setS(Shows s) { this.s = s; } public void Show() { if(s!=null)s.Show(); System.out.println("穿了鞋子"); } } public class Trousers extends Shows { public void setS(Shows s) { this.s = s; } public void Show() { if(s!=null)s.Show(); System.out.println("穿了裤子"); } } public class Tshit extends Shows { public void setS(Shows s) { this.s = s; } public void Show() { if(s!=null)s.Show(); System.out.println("穿了T恤"); } }
下面是实现方式
public class PerSon { private String name; private Shows s; public Shows getS() { return s; } public void setS(Shows s) { this.s = s; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void show(){ s.Show(); } public static void main(String[] args) { PerSon p=new PerSon(); p.setName("小明"); Shoe s1=new Shoe(); Tshit s2=new Tshit(); Trousers ts=new Trousers(); s1.setS(s2); ts.setS(s1); p.setS(ts); p.show(); } }
打印出来是:
穿了T恤
穿了鞋子
穿了裤子
他们递归调用了show方法
以上是关于装饰模式的主要内容,如果未能解决你的问题,请参考以下文章