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
    

      

  • 相关阅读:
    ASP.NET 2.0 中的主版頁面 Master Pages
    初探ERP的数据库框架
    node.js 入门,
    mysql 测试
    zendframework 内置view
    session.save_Handler
    读mysql技术内幕 InnoDB 第三章
    php 的命名空间 看鸟哥后的随笔
    mysql innodb技术内幕 ~读 1,2,3 复习
    php 无乱码截取中文
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/11186502.html
Copyright © 2011-2022 走看看