zoukankan      html  css  js  c++  java
  • 两种方式实现适配器

    1.通过继承的方式

    2.通过组合的方式

    package adapter;
    
    /**
     * Print是客户需要使用的接口
     */
    public interface Print {
        public void printWeak();
        public void printStrong();
    }
    package adapter;
    
    /**
     * Banner是原始的接口
     */
    public class Banner {
        private String string;
        
        public Banner(String string){
            this.string = string;
        }
        
        public void showWithParen(){
            System.out.println("("+string+")");
        }
        
        public void showWithAster(){
            System.out.println("*"+string+"*");
        }
    }
    package adapter;
    
    /**
     * PrintBanner是适配器,将Banner适配为Print
     * 此种方式是运用继承的方式实现的适配器
     */
    public class PrintBanner extends Banner implements Print {
    
        public PrintBanner(String string) {
            super(string);
        }
    
        @Override
        public void printWeak() {
            showWithParen();
        }
    
        @Override
        public void printStrong() {
            showWithAster();
        }
    
    }
    package adapter;
    /**
     * 该种方式是使用委托(组合)的方式实现适配器
     * 
     */
    public class PrintBanner2 implements Print{
        
        private Banner banner;
        
        public PrintBanner2(Banner banner){
            this.banner = banner;
        }
        
        @Override
        public void printWeak() {
            banner.showWithParen();
        }
    
        @Override
        public void printStrong() {
            banner.showWithAster();
        }
    
    }
    package adapter;
    /**
     * 伟大的客户
     */
    public class Client {
        public static void main(String[] args) {
            Print print = new PrintBanner("hello adapter model of inherit");
            print.printStrong();
            print.printWeak();
            
            
            Print print2 = new PrintBanner2(new Banner("hello adapter model of combination"));
            print2.printStrong();
            print.printWeak();
            
        }
    }
    运行结果:
    *hello adapter model of inherit* (hello adapter model of inherit) *hello adapter model of combination* (hello adapter model of inherit)

      

  • 相关阅读:
    最全的静态网站生成器(开源项目)
    移动互联网流量变现模式调研问卷
    公众平台商户接入(微信支付)功能申请教程
    微信支付全面开放
    百度天气预报接口
    微信公众平台开发(83) 生成带参数二维码
    微信支付接口申请指南
    微信自媒体账号涉违规大规模被封
    php大文件上传解决方案支持分片断点上传
    html5大文件上传解决方案(500M以上)
  • 原文地址:https://www.cnblogs.com/tisakong/p/4708463.html
Copyright © 2011-2022 走看看