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

    模式介绍

    适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。举个例子,读卡器是作为内存卡和笔记本之间的适配器。

    模式优点

    1、可以让任何两个没有关联的类一起运行。
    2、提高了类的复用。

    模式缺点

    1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是A接口,其实内部被适配成了B接口的实现。

    使用场景

    1、系统需要使用现有的类,而此类的接口不符合系统的需要。
    2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。

    系统建模

    通过适配器类,使MP3也具备MP4的放视频的功能。

    系统实现

    /**
     * 播放视频顶级接口
     */
    public interface VideoPlayer {
        public void playVideo();
        public void playAudio();
    }
    
    /**
     * MP4实体类
     */
    public class MP4Player implements VideoPlayer {
    
        @Override
        public void playVideo(){
            System.out.println("播放视频!");
        }
    
        @Override
        public void playAudio(){
            System.out.println("播放音频!");
        }
    }
    
    /**
     * 适配器类
     */
    public class MP4Adapter {
        private VideoPlayer videoPlayer = new MP4Player();
    
        @Override
        public void playVideo(){
            videoPlayer.playVideo();
        }
    }
    
    /**
     * 播放音频顶级接口
     */
    public interface AudioPlayer {
        public void playAudio();
    }
    
    /**
     * MP3实体类,拥有播放视频适配器类
     */
    public class MP3Player implements AudioPlayer {
        private MP4Adapter mp4Adapter = new MP4Adapter();
    
        @Override    
        public void playAudio(){
            System.out.println("播放音频!");
        }
    
        @Override
        public void playVideo(){
            mp3Adapter.playVideo();
        }
    }
    
    /**
     * 客户端
     */
    public class Client {
        public static void main(String args[]){
           MP3Player mp3 = new MP3Player();
           mp3.playAudio();
           mp3.playVideo();
        }
    }
    
    结果:
    播放音频!
    播放视频!
    
  • 相关阅读:
    用户登录就显示一部分按钮,未登录就显示登录按钮
    网页防止xss攻击
    前端页面使用编辑器
    Django框架
    参数*args与**kwargs
    Django的orm需要注意的地方
    查看Linux服务器配置命令
    PHP 浅析spl_autoload_register
    ubuntu服务器上安装PHP扩展bcmath遇到的问题Sub-process /usr/bin/dpkg returned an error code (1)
    JavaScript 变量and函数提升机制
  • 原文地址:https://www.cnblogs.com/feiqiangsheng/p/12115692.html
Copyright © 2011-2022 走看看