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)

      

  • 相关阅读:
    RSA加密及加签
    间隔Ns请求某函数并且有timeout
    关于Erlang中的behaviour
    Erlang&RabbitMQ服务安装配置
    java IO流详解
    Uncaught TypeError: Cannot read property 'options' of undefined
    sql server 数据修改不了的设计
    Android多点触控详解
    java实现图的遍历(深度优先遍历和广度优先遍历)
    判断输入的8个数字不是符合8X8皇后棋盘
  • 原文地址:https://www.cnblogs.com/tisakong/p/4708463.html
Copyright © 2011-2022 走看看