用于Java中的适配器模式

时间:2010-08-23 06:40:58

标签: java design-patterns

我一直在学习即将申请的初级开发角色的适配器和外观设计模式,因为我期待被问到我对模式和时间的了解。虽然模式本身似乎很直接 - 我正在努力想到实际用途,我可以在个人项目中使用它。

那么有人可以在小型个人项目中建议使用它吗?

该模式是否也出现在Java API中的任何位置?

5 个答案:

答案 0 :(得分:4)

要在[{1}}设计模式中使用,请查看this问题。

引用Java API

  

在计算机编程中,适配器   模式(通常称为   包装模式或只是一个包装器)   是一种翻译的设计模式   一个类的接口   兼容接口。

所以你很少会使用它。它只是调整两个不兼容的接口。

请记住,当您不需要设计模式时,请不要使用它。只是因为它写在大书中,并不意味着它满足您的所有需求,您必须盲目地遵循它。

答案 1 :(得分:3)

不确定这是否算作一个适配器(可能它比纯接口转换更多,将字节转换为字符),但是java.io.InputStreamReader如何将InputStream转换为Reader? / p>

也许java.util.concurrent.ExecutorService是一个外观,隐藏了用户之间的线程,队列和Runnables之间的详细交互?

答案 2 :(得分:2)

Head First Design模式使用以下单词开始关于适配器模式的章节:

  

在本章中,我们将尝试将一个方形挂钉放入圆孔中这样的不可能的壮举。

目的是使[某些对象]界面看起来像是他们不是的东西。我怀疑你在设计应用程序时使用这种模式。如果您有一个现有的应用程序,并且需要使它与第三方库或工具一起使用,这将非常有用。

我们都知道Java API中有一个适配器,尽管它非常隐蔽。你得到的是Arrays

的方法
Arrays.asList(T... a)

该方法返回Arrays.ArrayList的实例,该对象使数组适应List接口。

答案 3 :(得分:2)

以下情况需要适配器模式:

假设您已使用方法I1M1

定义了界面M2

C1C2实现此界面I1,现在C1实施M1M2您没有找到其他人的帮助现有的类,所以你需要自己编写所有逻辑。

现在,在实施课程C2时,您遇到的课程C3包含方法M3M4,可用于实施M1和{{1} {}为} M2所以要在课程C2中使用M3M4,您可以扩展课程C2并使用C3M3 } M4

在此示例中,C3变为C2Adapter class变为C3

adaptee

答案 4 :(得分:0)

有关适配器模式的真实示例,请查看我对this stack overflow question的回答。