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方法

  • 相关阅读:
    SpringBoot多数据源动态切换数据源
    @ConfigurationProperties 在IDEA中出现红色波浪线问题
    springboot+mybatis实现动态切换数据源
    Spring Boot配置多个DataSource
    模拟测试 20190714
    暴力日记
    模拟测试20190707 [排序//划艇//放棋子]
    组合数学总结
    莫比乌斯专题总结
    AC自动机总结
  • 原文地址:https://www.cnblogs.com/blackdeng/p/9029963.html
Copyright © 2011-2022 走看看