6.适配器设计模式

public interface PinPlug{
    void charge();
}

  

1.概述

适配器设计模式针对如下情况:-----客户需要用某个接口,但是能提供服务的接口没有实现那个接口。

  • 客户端只能使用某种接口---客户端是台灯,接口是双孔插座
  • 服务端----服务类是三孔插座
  • 适配器类是服务类和客户端中间的一个桥接类---插线板

2.代码

适配器模式的分类:

  • 类适配器----通过继承实现
  • 对象适配器--通过组合实现

2.1类适配器

  • 功能描述:为台灯充上电照明(台灯只能使用双孔插座)
  • public interface PinPlug{
        void charge();
    }
    
  • 1.描述:与台灯配套的插座接口
  • public class ThreePinPlug{
        public void specialcharge(){
            System.out.println("三孔插座充电");
        }
    }  
  • 2.描述:不能直接使用的三孔插座
  • public class PinPluginAdapter extends ThreePinPlug implements PinPlug{
        public void charge(){
            System.out.println("两孔桥接");
            super.specialcharge();
        }
    }  
  • 3.通过继承的方式创建一个把三孔转换为两空的类
  • public class Lamp {
        private PinPlug pinPlug;
        public Lamp(){
            this.pinPlug=new PinPluginAdapter();
        }
    
        public void Lignting() {
            if (pinPlug!=null) {
                pinPlug.charge();
                System.out.println("照明");
            }else{
                System.out.println("没电");
            }
        }
    
        public static void main(String[] args){
            Lamp lamp=new Lamp();
            lamp.Lignting();
        }
    }
  • 4.客户端:台灯

2.2对象适配器---组合的方式

  • public class PinPluginAdapter implements PinPlug{
        ThreePinPlug threePinPlug=new ThreePinPlug();
        public void charge(){
            System.out.println("两孔桥接");
            threePinPlug.specialcharge();
        }
    }  

3.分析

配器模式不适合在详细设计阶段使用它,它是一种补偿模式,专用来在系统后期扩展、修改时所用。

时间: 2024-11-05 02:21:39

6.适配器设计模式的相关文章

适配器设计模式

类的适配器模式 对象的适配器模式 接口的适配器模式 思想: 将类的某个接口转换成客户端期望的另一个接口表示 目的: 消除由于接口不匹配造成的类的兼容性问题 1.UML图之类的适配器设计模式 public class Source { 2. 3. public void method1() { 4. System.out.println("this is original method!"); 5. } 6.} [java] view plaincopy 1.public interfa

适配器设计模式简介

适配器模式是将将一个类的接口适配成用户所期待的. 生活中适配器也无处不在.常见的是电源适配器.一个15V笔记本通过电源适配器可以接在220V的电压下使用. 想象这么一个需求场景.在项目早期建立了很多类库,这个类库中方法众多,代码复杂,加入新的方法后或者修改旧有方法会使得原类库中方法大幅修改.(或者类库源码找不到了,也难以进行修改).那么此时可以重新建立一个新接口,通过适配器而使用原有方法. 适配器模式就是将一个接口转化为客户希望的另一个接口. 适配器的常用分类: 现在主要介绍单向适配器和单接口适

适配器设计模式初探(Java实现)

本篇随笔主要介绍Java实现设配器设计模式. 先来看下待解决的问题: (图片转自http://blog.csdn.net/jason0539) 由上图的情况可知,欧洲壁式插座只有三足插口,如果我们想要使用的是两足插口,就需要适配器来进行转换.(适配器一面是三足插口,一面是两足插口) 适配器模式一般有两种实现方式: 1.类适配器 2.对象适配器. 先来看下类适配器的UML图:  客户端只能操纵 Target 接口的 Request 方法来进行需要的操作(当然这里就相当于调用 Request 方法使

【ThinkingInJava】12、适配器设计模式

/** * 书本:<Thinking In Java> * 功能:适配器设计模式 * 文件:Processor.java * 时间:2015年4月2日20:36:59 * 作者:cutter_point */ package Lesson9Interfaces.interfaceprocessor; public interface Processor { String name(); Object process(Object input); } /** * 书本:<Thinking

【ThinkingInJava】14、适配器设计模式 (2)

/** * 书本:<Thinking In Java> * 功能:适配器设计模式 * 文件:FilterAdapter.java * 时间:2015年4月2日20:52:07 * 作者:cutter_point */ package Lesson9Interfaces.interfaceprocessor; import Lesson9Interfaces.filters.BandPass; import Lesson9Interfaces.filters.Filter; import Les

接口 interface 以及适配器设计模式原理

定义接口用的不是class,而是interface. 接口中常见的成员:而且这些成员都是固定的修饰符. 1.全局变量:public static final (不写的时候java会默认添加上去,但是阅读性不好) 2.抽象方法:public abstract 接口中的成员都是公共权限的. 类与类之间是继承关系,类与接口之间是实现关系. 接口实现implements 接口不可以实例化,只能由实现了接口的子类覆盖了接口中所有的抽象方法后,该子类才可以实例化,否则这个子类就是一个抽象类. 在java中不

java开发中使用的适配器设计模式

package shipeiqidemo; /* * java中常见的一种设计模式:适配器 * 来源:一个子类要去实现接口,那么就必须要实现接口全部的抽象方法,有的时候抽象方法 * 很多,但是又用不着去全部实现,所以此时就定义一个抽象类去实现这个接口,然后通过子类去继承 * 这个抽象类,这个抽象类就简称适配器 */ public class shipeiqidemo { public static void main(String[] args) { //zhuozi zz = new zhuo

十九、适配器设计模式

1. 适配器模式介绍 我们在日常生活中,会经常接触到设配器模式,比如我们的充电器,不同的手机接口类型可能不一样,这个时候只要一个转接口,就可以解决我们的问题.这个转接口就是我们的适配器. 定义 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起的两个类能够在一起工作. 2. 适配器模式的使用场景 系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容. 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的

设计模式之----------适配器设计模式

<?php /** **适配器模式:将需要把一类对象转化成另一类对象 **把源接口转化为目标接口 **适用范围:1.存在一个类,你想应用,接口却不是你想要的 **2. ****/ //目标接口 interface Target{ public function simpleFunction1(); public function simpleFunction2(); } //源接口 class Adaptee{ public function simpleFunction1(){ echo 's