我一直在学习即将申请的初级开发角色的适配器和外观设计模式,因为我期待被问到我对模式和时间的了解。虽然模式本身似乎很直接 - 我正在努力想到实际用途,我可以在个人项目中使用它。
那么有人可以在小型个人项目中建议使用它吗?
该模式是否也出现在Java API中的任何位置?
答案 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)
以下情况需要适配器模式:
假设您已使用方法I1
和M1
M2
C1
和C2
实现此界面I1
,现在C1
实施M1
和M2
您没有找到其他人的帮助现有的类,所以你需要自己编写所有逻辑。
现在,在实施课程C2
时,您遇到的课程C3
包含方法M3
和M4
,可用于实施M1
和{{1} {}为} M2
所以要在课程C2
中使用M3
和M4
,您可以扩展课程C2
并使用C3
和M3
} M4
。
在此示例中,C3
变为C2
,Adapter class
变为C3
adaptee
答案 4 :(得分:0)
有关适配器模式的真实示例,请查看我对this stack overflow question的回答。