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)

      

  • 相关阅读:
    记一次struts项目空指针异常
    struts2问题(已解决)java.nio.file.InvalidPathException: Illegal char <:> at index 3: jar:file:
    Road Map
    API
    Report of program history
    正则表达式验证用户信息
    RegExp( replace()的示例 )
    DOM与BOM部分示例
    伪类与伪元素
    第三次随笔(按钮外观改变)
  • 原文地址:https://www.cnblogs.com/tisakong/p/4708463.html
Copyright © 2011-2022 走看看