gpt4 book ai didi

java - 如何在Java中实现Pluggable Adapter设计模式

转载 作者:行者123 更新时间:2023-11-30 05:41:20 25 4
gpt4 key购买 nike

我知道如何实现基本的Adapter设计模式,也知道C#如何使用委托(delegate)来实现Pluggable Adapter设计。但我找不到任何用 Java 实现的东西。您介意指出一个示例代码吗?

提前致谢。

最佳答案

可插入适配器模式是一种创建适配器的技术,不需要为需要支持的每个适配器接口(interface)创建一个新类。

在 Java 中,此类事情非常简单,但没有涉及任何与您可能在 C# 中使用的可插入适配器对象实际对应的对象。

许多适配器目标接口(interface)都是功能接口(interface)——仅包含一种方法的接口(interface)。

当您需要将此类接口(interface)的实例传递给客户端时,您可以使用 lambda 函数或方法引用轻松指定适配器。例如:

interface IRequired
{
String doWhatClientNeeds(int x);
}

class Client
{
public void doTheThing(IRequired target);
}

class Adaptee
{
public String adapteeMethod(int x);
}

class ClassThatNeedsAdapter
{
private final Adaptee m_whatIHave;

public String doThingWithClient(Client client)
{
// super easy lambda adapter implements IRequired.doWhatClientNeeds
client.doTheThing(x -> m_whatIHave.adapteeMethod(x));
}

public String doOtherThingWithClient(Client client)
{
// method reference implements IRequired.doWhatClientNeeds
client.doTheThing(this::_complexAdapterMethod);
}

private String _complexAdapterMethod(int x)
{
...
}
}

当目标接口(interface)有多个方法时,我们使用匿名内部类:

interface IRequired
{
String clientNeed1(int x);
int clientNeed2(String x);
}

class Client
{
public void doTheThing(IRequired target);
}


class ClassThatNeedsAdapter
{
private final Adaptee m_whatIHave;

public String doThingWithClient(Client client)
{
IRequired adapter = new IRequired() {
public String clientNeed1(int x) {
return m_whatIHave.whatever(x);
}
public int clientNeed2(String x) {
return m_whatIHave.whateverElse(x);
}
};
return client.doTheThing(adapter);
}
}

关于java - 如何在Java中实现Pluggable Adapter设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55574759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com