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

  • 相关阅读:
    523. Continuous Subarray Sum
    517. Super Washing Machines
    516. Longest Palindromic Subsequence
    486. Predict the Winner
    467. Unique Substrings in Wraparound String
    474. Ones and Zeroes
    语法小结
    互评作业:使用数组
    466. Count The Repetitions
    1052 卖个萌 (20 分)
  • 原文地址:https://www.cnblogs.com/blackdeng/p/9029963.html
Copyright © 2011-2022 走看看