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

    场景

    美国交流电插头(2头)无法插到欧洲壁式插座(3孔)

    解决方法是在中间环节用适配器转化下搞定。

    意图

    将一个借口转化成另一个接口

    举例

    代码

    #

    package designpattern.adapter;
    
    public interface AmericanPlug {
        public void desc();
        public void func();
    }

    #

    package designpattern.adapter;
    
    public interface EuropePlug {
        public void desc();
        public void func();
    }

    ##

    package designpattern.adapter;
    
    public class AmericanPlugImpl implements AmericanPlug{
        public void desc() {
            System.out.println("American");
        }
    
        public void func()  {
            System.out.println("American two plug");
        }
    }

    ##

    package designpattern.adapter;
    
    public class EuropePlugImpl implements EuropePlug{
        public void desc() {
            System.out.println("EuropePlug");
        }
    
        public void func() {
            System.out.println("EuropePlug three plug");
        }
    }

    ###

    package designpattern.adapter;
    
    public class AmericanAdapter implements EuropePlug{
        AmericanPlug americanPlug;
    
        public AmericanAdapter(AmericanPlug americanPlug) {
            this.americanPlug = americanPlug;
        }
    
        public void desc() {
            americanPlug.desc();
        }
    
        public void func() {
            System.out.println("Before adapter");
            americanPlug.func();
            System.out.println("After adapter");
        }
    }

    测试

    package designpattern.adapter;
    
    public class Test {
        public static void main(String[] args) {
            System.out.println("AmericanPlug---------");
            AmericanPlug americanPlug = new AmericanPlugImpl();
            americanPlug.desc();
            americanPlug.func();
    
    
            System.out.println("
    EuropePlug---------");
            EuropePlug europePlug = new EuropePlugImpl();
            europePlug.desc();
            europePlug.func();
    
            System.out.println("
    AmericanAdapter---------");
            AmericanAdapter americanAdapter = new AmericanAdapter(americanPlug);
            americanAdapter.desc();
            americanAdapter.func();
        }
    }

    输出

    AmericanPlug---------
    American
    American two plug
    
    EuropePlug---------
    EuropePlug
    EuropePlug three plug
    
    AmericanAdapter---------
    American
    Before adapter
    American two plug
    After adapter
    
    Process finished with exit code 0
    

      

  • 相关阅读:
    病毒侵袭持续中---hdu3065(AC自动机模板)
    病毒侵袭---hdu2896(AC自动机)
    Keywords Search---hdu2222(AC自动机 模板)
    Theme Section---hdu4763(kmp, Next数组的运用)
    Girls' research---hdu3294(回文子串manacher)
    吉哥系列故事——完美队形II---hdu4513(最长回文子串manacher)
    String Boot-thymeleaf使用(四)
    Spring Boot-properties使用(二)
    Spring Boot-springbootHelloword(一)
    redis-运维-redis单机和集群
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/11186502.html
Copyright © 2011-2022 走看看