zoukankan      html  css  js  c++  java
  • 装饰模式

    装饰模式是指一个对象内部递归拥有自己一样的对象。不断对对象自己进行修饰,或者实现方法进行改造,就像圣诞树一层一层挂上不同的装饰品一样。

    典型的常见的情况是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方法

  • 相关阅读:
    hdu 1863 畅通工程
    poj 2524 Ubiquitous Religions
    04 Linux终端命令01
    05 linux中yum源报错
    Filterg过滤器和Listener监听器
    03 Centos的文件目录、远程连接工具及快照操作
    02 安装虚拟机以及设置虚拟机网卡信息
    01VM虚拟机介绍及配置虚拟机网卡信息
    Jstl表达式
    EL表达式
  • 原文地址:https://www.cnblogs.com/blackdeng/p/9029963.html
Copyright © 2011-2022 走看看