`
小牛犊
  • 浏览: 96950 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

GoF:Adapter模式

阅读更多

adapter模式,下面以2、3口电源接口为例。

电脑的电源线是3口的,插座是2口的,所以需要一个适配器,使他们能够工作。

eg:

 

A.接口口子类型

//2脚插座口  凹的那种
public interface Socket2A {
	public void access(Socket2B sb);
}

//2脚插座  凸的那种
public interface Socket2B {
	public void insert(Socket2A sa);
}

//3脚插座口  凹的那种
public interface Socket3A {
	public void access(Socket3B sb);
}

//3脚插座  凸的那种
public interface Socket3B {
	public void insert(Socket3A sa);
}

B。电脑 

//电脑的电源线,3口的、凸的
public class Computer implements Socket3B {
	Computer(){
		System.out.println("电脑电源线是3口的");
	}
	@Override
	public void insert(Socket3A sa) {
		System.out.println("电脑电源线已经插上3口的了");
	}
}

C。电源插座

//电源插座,2口的、凹的
public class PowerSocket implements Socket2A {
	PowerSocket(){
		System.out.println("电源插座是2口的");
	}
	@Override
	public void access(Socket2B sb) {
		System.out.println("电源插座接到了2口线");
	}
}

D。适配器(也可以使用组合的方式)

public class SocketAdapter implements Socket2B, Socket3A {
	SocketAdapter(){
		System.out.println("电源适配器有一个3口的接受口和2杆的插出口");
	}
	@Override
	public void insert(Socket2A sa) {
		System.out.println("电源适配器插入2口插座了");
	}
	@Override
	public void access(Socket3B sb) {
		System.out.println("电源适配器接受3口了");
	}
}

E。测试 

public class Test {
	public static void main(String[] args) {
		Socket3B c = new Computer();//3脚插座  凸的那种
		Socket2A p = new PowerSocket();//电源插座,2口的、凹的
		SocketAdapter s = new SocketAdapter();//电源适配器
		s.access(c);
		s.insert(p);
	}
}

F.结果

电脑电源线是3口的
电源插座是2口的
电源适配器有一个3口的接受口和2杆的插出口
电源适配器接受3口了
电源适配器插入2口插座了

 

分享到:
评论

相关推荐

    GOF 设计模式 中文 高清

    8. **适配器模式 (Adapter)**:将一个类的接口转换成客户希望的另一个接口。适配器使原本不兼容的类可以一起工作。 9. **桥接模式 (Bridge)**:将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种...

    GOF(设计模式)概述

    《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者共同编写,因此人们通常将其...

    GoF 23种设计模式的详解与应用

    结构模式:设计模式之Facade(外观),设计模式之Proxy(代理),设计模式之Adapter(适配器),设计模式之Composite(组合),设计模式之Decorator(油漆工),设计模式之Bridge,设计模式之Flyweight(享元). 行为模式:设计模式之...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 - **Decorator模式**:动态地给一个对象添加一些额外的职责。就增加功能而言,Decorator模式相比生成子类更为灵活。 - **Composite模式**:...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 - **应用场景**:想要复用一些现存的类,但其接口不符合需求时。 - **优点**:可以使原本不兼容的类一起运行。 - **缺点**:过多地使用...

    C++ 设计模式 GOF 23经典模式

    《C++设计模式:GOF 23经典模式解析》 设计模式是软件工程中的一种通用解决方案,它针对常见的设计问题提供了经过验证的最佳实践。GOF(Gang of Four)23种设计模式是由Erich Gamma、Richard Helm、Ralph Johnson和...

    design-patterns-gof:GoF设计模式实现

    6. **适配器模式 (Adapter)**:将两个不兼容的接口通过适配器连接起来,使得原本不能一起工作的类可以协同工作。在Java中,可以使用组合或继承来实现适配器。 7. **装饰器模式 (Decorator)**:动态地给一个对象添加...

    GOF 23种设计模式

    《GOF 23种设计模式》是软件工程领域中极具影响力的一本书,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师合著,因此也被称为“Gang of Four”(GOF)的设计模式。这本书详细阐述了在面向...

    中文版GOF设计模式

    GOF,全称为 Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides,这四位作者合著了《设计模式:可复用面向对象软件的基础》一书,被誉为设计模式领域的经典之作。在IT行业中,设计模式是软件开发中的...

    GOF23设计模式讲解及C++源代码实现

    GOF,即 Gamma、Erich, Johnson, Vlissides 四位大师合著的《设计模式:可复用面向对象软件的基础》一书,提出了23种经典的设计模式。这些模式为软件设计提供了通用的解决方案,使得开发者能够利用前人的经验,提高...

    GoF 23种设计模式解析附C++实现源码(2nd Edition

    - **2.2 Adapter模式**:适配器模式将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 - **2.3 Decorator模式**:装饰器模式动态地给一个对象添加...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    这些模式是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师,通常被称为GoF(Gang of Four),在他们的经典著作《设计模式:可复用面向对象软件的基础》中提出的。这本书详细阐述了23种设计...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    - **定义**:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 - **应用场景**:希望复用一些现存的类,但接口又与复用环境要求不一致时。 ...

    设计模式精解-GoF23种设计模式解析

    - **2.2 Adapter模式**:Adapter模式将一个类的接口转换成客户希望的另一个接口。 - 适配器模式可以让你以一种无缝的方式使用那些不兼容的接口。 - **2.3 Decorator模式**:Decorator模式动态地给一个对象添加...

    GoF+23种设计模式解析附C++实现源码(2nd+Edition).pdf

    **C++实现**: 在C++中实现Adapter模式通常涉及到创建一个新的适配器类,该类通过组合或继承的方式包含需要被适配的类,并提供新的接口。 #### 2.3 Decorator模式 **定义**: Decorator模式动态地给一个对象添加一些...

    设计模式精解-GoF 23种设计模式解析附

    - **Adapter模式**:将一个类的接口转换成客户希望的另一个接口。 - **应用场景**:希望复用现有类的功能但接口不兼容时。 - **优点**:提高了代码的复用性。 - **缺点**:可能会引入额外的类。 - **Decorator...

Global site tag (gtag.js) - Google Analytics