场景:手机通过充电器后从220V常规电源到4V
描述:220v家庭用电不能直接对手机充电,需要把电压降到4v才可以。(不知道是不是4v,这里简化一下:到4v即可)
(一)常规电源
//Adaptee(被适配者)
public class NormalPower
{
public int GetPower()
{
return 220;
}
}
常规电源,电压为220v,这个就是将被适配的类。
(二)手机
//手机
public class Phone
{
public void AddPower(int iPower)
{
if (iPower == 4)
{
Console.WriteLine("手机充电中……");
}
else
Console.WriteLine("充电电压不正常,手机即将损坏!");
}
}
这就是客户端,用以使用4v电源。
(三)自己定义的接口
//定义新接口(自己定义)
public interface IPhoneAdapter
{
int GetPower4V();
}
这个用来实现转换电源电压
(四) 类适配器实现
//类适配
public class Adapter:NormalPower,IPhoneAdapter
{
public int GetPower4V()
{
//正常电压
int iPower = this.GetPower();
//变压
iPower-= 216;
//输出4V电源
return iPower;
}
}
类适配器以继承方式实现。在实现自定义接口时,得到父类的GetPower()的值为220V,通过变压得到4V。
(五)测试类适配器
[Test]
public void TestAdapter()
{
//常规电源
NormalPower power = new NormalPower();
//手机
Phone phone = new Phone();
//手机加上常规电源,当前状态
phone.AddPower(power.GetPower());
//电源充电适配器
Adapter adapterPower = new Adapter();
//硬盘加上电源,当前状态
phone.AddPower(adapterPower.GetPower4V());
}
结果:
充电电压不正常,手机即将损坏!
手机充电中……
(六)对象适配器实现
//对象适配器
public class Adapterr : IPhoneAdapter
{
private NormalPower _power = new NormalPower();
public int GetPower4V()
{
//正常电压
int iPower = _power.GetPower();
//变压
iPower -= 216;
//输出4V电源
return iPower;
}
}
对象适配器通过组合方式来实现。
(七) 对象适配器测试
[Test]
public void TestAdapter()
{
//常规电源
NormalPower power = new NormalPower();
//手机
Phone phone = new Phone();
//手机加上常规电源,当前状态
phone.AddPower(power.GetPower());
//电源充电适配器
Adapterr adapterPower = new Adapterr();
//硬盘加上电源,当前状态
phone.AddPower(adapterPower.GetPower4V());
}
结果:
充电电压不正常,手机即将损坏!
手机充电中……
在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。
那么如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?这就是本文要说的Adapter 模式。
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
GOF23定义了两种Adapter模式的实现结构:对象适配器和类适配器。但类适配器采用“多继承”的实现方式,带来不良的高耦合,所以一般不推荐使用。对象适配器采用“对象组合”的方式,更符合松耦合精神。
Adapter模式可以实现的非常灵活,不必拘泥于GOF23中定义的两种结构。例如,完全可以将Adapter模式中的“现存对象“作为新的接口方法参数,来达到适配的目的。
Adapter模式本身要求我们尽可能地使用”面向接口的编程"风格,这样才能在后期很方便的适配。
http://www.cnblogs.com/jams742003/
分享到:
相关推荐
在阅读文章《设计模式——适配器模式(adapter)》时,你可以期待了解到更多关于适配器模式的实战案例、优缺点分析以及如何在实际项目中有效利用这一模式来解决问题。同时,提供的`adapter`压缩包文件可能包含示例...
通过阅读博客文章《设计模式——适配器模式》(链接:https://wjy320.iteye.com/blog/2042323),我们可以深入了解适配器模式的实现细节,包括具体的代码示例以及在实际项目中的应用案例。这个博客可能会讨论如何在...
"设计模式C#实例——大洋系统"这个主题涵盖了五个经典的设计模式:抽象工厂(Abstract Factory)、适配器(Adapter)、桥接(Bridge)、建造者(Builder)以及责任链(Chain of Responsibility)。接下来,我们将...
"设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式不仅对面试有所帮助,也是职场发展中的必备技能,无论你使用哪种开发语言。 设计...
### 设计模式实验报告——适配器模式 #### 一、引言 设计模式是一种在特定情境下解决软件设计问题的通用解决方案。它为解决常见问题提供了一种可复用的设计思路,帮助开发者构建出更加灵活、易于维护的系统。在...
4.1.2现实中的实例——电脑电源适配器 97 4.1.3C#实例——化学数据银行 98 4.1.4Java实例——清洁系统 102 4.1.5优势和缺陷 104 4.1.6应用情景 104 4.2BridgePattern(桥接模式) 104 4.2.1定义 104 4.2.2...
本主题聚焦于设计模式的一个实例代码——适配器模式。适配器模式是一种结构型设计模式,它允许不兼容的接口之间进行通信,从而实现系统的灵活性和复用性。 适配器模式的核心思想是通过创建一个包装器(adapter),...
接下来的实例展示了适配器模式在实际场景中的应用。在这个例子中,我们有三个不同位置的球员类——前锋、中锋和后卫,他们都遵循相同的`Player`接口,即具有`Attack`和`Defense`方法。然后有一个`ForeignCenter`类,...
设计模式——适配器模式 适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口.Adapter Pattern使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 应用场景:系统数据和
设计模式是软件开发中的一种...总的来说,这三种设计模式——单例、适配器和工厂,都是为了提高软件的可维护性、可扩展性和灵活性。在实际开发中,理解并熟练运用这些模式可以帮助我们编写出更加优雅、易于维护的代码。
这个压缩包文件"安卓Android源码——自定义适配器的ExpandableListView.rar"包含了一份关于如何在Android应用中自定义`ExpandableListView`适配器的详细文档(自定义适配器的ExpandableListView.doc)以及一个实际的...
- 适配器模式:将两个不兼容的接口进行适配,使原本不兼容的类可以一起工作。 - 桥接模式:将抽象部分与实现部分分离,使它们可以独立变化。 - 组合模式:允许你将对象组合成树形结构,表现得像单个对象。 - ...
【蓝牙实例——MoveBoxs】 MoveBoxs是一个蓝牙通信的示例项目,它展示了如何在实际应用中使用蓝牙技术。这个实例包括了蓝牙的创建、数据传输、连接的销毁以及连接异常处理等关键步骤。 1. **蓝牙创建**:在应用...
本文将详细解释Callable接口的使用、适配器模式在创建线程中的应用,以及FutureTask在其中的角色。 首先,Callable接口与Runnable接口类似,都是用于创建新线程的接口。但是,Runnable接口的run()方法无返回值,而...
### 设计模式——适配器模式(Adapter Pattern) 在软件工程领域中,设计模式是一种用于解决常见问题的标准化方法。这些模式提供了一种系统化的解决方案,帮助开发人员编写出更易于理解、维护和扩展的代码。适配器...
单例模式确保一个类只有一个实例,并提供全局访问点。在Java中,通常使用双重检查锁定(DCL)或者静态内部类来实现线程安全的单例。单例模式常用于配置管理、日志服务等场景。 2. **工厂模式**: 工厂模式提供了...
### 设计模式与泡MM——设计模式入门教程 #### 一、创建型模式 ##### 1、FACTORY(工厂模式) 工厂模式的核心在于定义了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂模式让类的实例化延迟到子类中...