zoukankan      html  css  js  c++  java
  • 适配器模式

    某城市正在创建“厕所工程计划”,要求男生只能上男厕,女生只能上女厕。

    一、厕所接口

    此时,我们定义一个厕所接口IWC。

    public interface IWC {
        /**
         * 男厕、女厕
         */
        public void ManWC();
        public void WomanWC();
    }

    二、男人上厕所。

    男人上厕所时,我们男人类(Man)要实现厕所接口(IWC)。

    那么,问题来了,我男人上厕所,实现了ManWC男厕方法,还要实现厕所接口的WomanWC女厕方法吗???

    答案显而易见,我们肯定不需要实现WomanWC女厕方法,但是我们继承了接口,如何避免“实现接口中所有的方法”这一准则呢?

    三、厕所适配器登场

    适配器的出现,缓解了这一尴尬局面。

    public abstract class WCAdapter implements IWC {
    
        public AbstractWC() {
            // TODO Auto-generated constructor stub
        }
    
        @Override
        public void ManWC() {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void WomanWC() {
            // TODO Auto-generated method stub
    
        }
    
    }

    此时,我们用厕所适配器(WCAdapter)来实现接口中所有的方法。但是方法体为空。

    另外厕所适配器(WCAdapter)用抽象类的原因也很简单,适配器中所有方法的方法体都为空,实例化适配器并调用方法没有任何意义,因此我们不允许实例化适配器

    四、男人类(Man)继承适配器

    public class Man extends WCAdapter {
    
        public Man() {
            // TODO Auto-generated constructor stub
        }
        
        public void ManWC() {
            System.out.println("我去男厕");
        }
    
    }

    此时,男人类继承厕所适配器(WCAdapter),我们只需要重写适配器中的ManWC,即男厕方法,即可。

    此时男人类,并没有直接实现了,厕所接口的WomanWC女厕方法。

    五、运行

    public class Main {
    
        public static void main(String[] args) {
            
            IWC wc = new Man();
            wc.ManWC();//我去男厕
        }
    
    }

    六、总结

    适配器模式,在java源码框架中得到了大量的使用。

    比如,WindowAdapter适配器,继承了WindowListener接口,

    WindowListener接口中,我们常用的函数也就是窗体关闭函数windowClosing,

    我们仅使用一个windowClosing函数,就要完全重写WindowListener接口吗?

    因此,适配器WindowAdapter出现了。

    另外还有Servlet接口,以及适配器GenericServlet等等。

  • 相关阅读:
    Linux文件名匹配
    Linux的常用命令
    百度飞桨学习笔记【Windows下用anaconda安装飞桨】
    在python中调用shell命令获得返回值
    使用sratoolkit下载NCBI数据
    perl 打开gz压缩文件 输出gz压缩文件
    jupyter notebook安装教程,打开ipynb文件
    生物信息学相关网站和博客资源
    R的循环补齐功能
    perl 遍历目录并且对目录中的文件进行操作
  • 原文地址:https://www.cnblogs.com/zh1996/p/10348727.html
Copyright © 2011-2022 走看看