gpt4 book ai didi

java - "Facade design pattern"和 Java 接口(interface)在概念上是否相同?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:06:51 25 4
gpt4 key购买 nike

“外观设计模式”和 Java 接口(interface)在概念上是否相同?因为两者都通过提供表达复杂功能的简单方式来实现抽象。我们可以说通过创建界面我们遵循了 Facade 模式吗?

最佳答案

不,我不一样。对于实现外观设计模式,不需要实现任何接口(interface)。作为一个示例,它只是提供了一个与您的服务通信的新层。

class ServiceFacade() {
private Service1 service1;
private Service2 service2;

public void update(Entity entity){
service1.update(entity);
service2.update(entity);
}
}

所以它会给你一个点来与所有相关的服务进行通信。您无需调用 service1.update()service2.update(),只需调用 facade.update(),因此您可以确定两者服务更新实体。

再举一个例子:也许每次 service 更新时你都需要 refresh() 缓存。这也可以封装在您的 Facade 中:

public void update(Entity entity) {
service.update(entity);
cache.refresh();
}

如果你的外观类只有一个依赖,但你想扩展这个依赖的功能,你可以通过实现装饰器模式来实现。这是您确实需要实现接口(interface)的地方。让我们看看下面的例子。假设你有一个服务,你想用一个简单的缓存来扩展它

class CachedService implement Service {
private Service service;
CachedService(Service service, Cache cache){
......
}
......

private Entity get(Long id) {
Entity cachedEntity = cache.get(id);
if (cachedEntity != null){
return cachedEntity;
}
return service.get(id);
}
}

关于java - "Facade design pattern"和 Java 接口(interface)在概念上是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42342777/

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