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)

      

  • 相关阅读:
    spring boot图片上传至远程服务器并返回新的图片路径
    java错误笔记
    mybatis逆向工程
    将vue-cli项目配置在nginx上
    spring boot使用jpa查询mysql数据库的视图时不报错,但查询结果数据总是重复第一条
    match,location,history
    fetch和axios区别,proxy代理配置
    es6语法错误
    JAVA多线程之volatile 与 synchronized 的比较
    做到这一点,你也可以成为优秀的程序员
  • 原文地址:https://www.cnblogs.com/tisakong/p/4708463.html
Copyright © 2011-2022 走看看