gpt4 book ai didi

java - Facade 模式的最佳实践是什么?

转载 作者:搜寻专家 更新时间:2023-11-01 01:43:39 25 4
gpt4 key购买 nike

我的代码可以正常工作,但我不知道我的实现方式是否合适。基本上,我想保持模式而不违反它。

代码如下所示:

包模型(省略了 setter/getter):

public class CA {
private Integer in;
private Integer jn;
}

public class CB {
private Integer kn;
private Integer ln;
}

public class CC {
private static CC instancia;
private CA a;
private CB b;

public static CC getInstancia() {
if(instancia == null) {
instancia = new CC();
}

return instancia;
}
}

包裹业务:

class CCBusiness {

static CC c = CC.getInstancia();

void alter(Integer input) {
c.getCA.setIn(input);
Integer num = c.getCB.getLn();
}
}

包外观:

class FacadeOne {

void methodOne() {
CCBusiness.alter(1);
// And more xxBusiness.xx()
}

真正的代码更复杂,但为了解释我的疑惑,我认为这应该可行。

在一个外观中我调用了几个 Business 对象,但是一个 Business(在本例中是 CC 类的那个)可以修改其他类(在本例中是 CC 中的类)的属性是合适的吗?我应该创建 CABusiness 和 CBBusiness 吗?

因为,据我所知,一个业务不能调用另一个业务,所以第二个要参数化以从 FacadeOne 接收对象(如果我创建 CABusiness 和 CBBusiness)?

最佳答案

我认为一些说明可能会对您有所帮助:外观模式可以帮助您对多个类进行单点访问,这些类隐藏在外观后面,因此隐藏到外面的世界。通常这些类形成某种模块或逻辑单元。

您遇到的问题是外观背后的结构 及其层次结构。如果不了解全貌,这很难分析,但根据我掌握的信息,最好有几个你的业务类,可以从外观单独调用。在业务对象之间创建交叉调用将有机会使您的代码变得面条化。

至于最佳实践和技巧,最简单的方法是画一张草图您的类,这通常会说明很多问题。而且您已经完成了基于 UML 的文档的一半。 :-)

顺便说一句,避免给你的类命名,例如 CA、CB...这就像命名变量 a001、a002...说出名称对可读性有很大帮助!

关于java - Facade 模式的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19355730/

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