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
    

      

  • 相关阅读:
    每天一道LeetCode--141.Linked List Cycle(链表环问题)
    每天一道LeetCode--119.Pascal's Triangle II(杨辉三角)
    每天一道LeetCode--118. Pascal's Triangle(杨辉三角)
    CF1277D Let's Play the Words?
    CF1281B Azamon Web Services
    CF1197D Yet Another Subarray Problem
    CF1237D Balanced Playlist
    CF1239A Ivan the Fool and the Probability Theory
    CF1223D Sequence Sorting
    CF1228D Complete Tripartite
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/11186502.html
Copyright © 2011-2022 走看看