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等等。

  • 相关阅读:
    程序的链接
    Graphviz 画图的一些总结
    C表达式中的汇编指令
    epoll(2) 源码分析
    epoll(2) 使用及源码分析的引子
    eventfd(2) 结合 select(2) 源码分析
    poll(2) 源码分析
    select 源码分析
    kfifo
    程序的机器级表示:寻址方式、指令及栈的运行机制
  • 原文地址:https://www.cnblogs.com/zh1996/p/10348727.html
Copyright © 2011-2022 走看看