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

    说明:今天忽然想起好久之前学习的装饰者设计模式,总结了一下。原理就是:如果一个类已经被包装好了,我们想对这个类的某个方法在增加一些新的内容。

    如何在不需要对原先包装好的类上进行增加呢??

    分为三步:

    1、已经实现某些方法的类继承一个接口。那我也需要去继承这个接口。

    2、覆写这个接口的共同方法。(需要装饰的那个方法)

    3、需要把原先包装好的类的实例传递进来。

    下面是一个DEMO,以便于理解:

    class DecratorCat implements ICat{
    
        private ICat cat;
    
        public DecratorCat(ICat cat){
            
            this.cat = cat;
        }
        
        @Override
        public void run() {
            
            //添加 自己的逻辑 
            
            System.out.println("小黑 抓住 老鼠 只用 了  3秒 时间 ...");
            
            //调用 原 有的逻辑 
            cat.run();
        }
    }
    
    // 被装饰者
    class Cat implements ICat{
        
        
        public void run(){
            
            System.out.println("小黑的黑暗中奔跑 抓住了 一只 老鼠...");
            
        }
    }
    
    interface ICat{
        public void run();
    }
        // 2. 装饰设计模式 :   装饰者 和 被装饰者
        // 用的时候, 要满足的条件:
        /*
         *    两个条件: 
         *        第一个:    
         *            装饰者和被装饰者 必须要实现同样的接口或者 有共同 父类 
         *        第二个:
         *             被装饰者 必须要 传递给 装饰者 --- 装饰者持有 对被装饰者的引用
         */
        
        @Test
        public void test2(){
            
            DecratorCat cat = new DecratorCat(new Cat());
            
            cat.run();
            
        }
        
  • 相关阅读:
    k8s运行容器之Job应用(6)
    k8s创建资源的两种方式及DaemonSet应用(5)
    kubernetes架构及deployment应用(4)
    docker部署harbor私有镜像库(3)
    k8s集群部署(2)
    kubernetes介绍(1)
    Docker网络(5)
    Docker存储(4)
    Docker镜像的仓库及底层依赖的核心技术(3)
    Docker的镜像及容器常用操作(2)
  • 原文地址:https://www.cnblogs.com/tinyclear/p/6123025.html
Copyright © 2011-2022 走看看