gpt4 book ai didi

java - 用于填充值对象的面向对象代码

转载 作者:行者123 更新时间:2023-11-30 04:33:41 24 4
gpt4 key购买 nike

这是一个低级设计问题。我正在尝试掌握面向对象编程。

我正在编写一个 Java 类,其中包含一个设置值对象的数据成员值的方法。这些值是我的类根据某些业务逻辑计算的。最后,我的类应该返回如此填充的值对象。最面向对象的方法是什么?

一种可能的方法,我似乎正在努力,在我的Java类中为我需要设置的每个数据成员(VO的)创建compute()方法。这些计算方法中的每一个都返回我使用值对象的相应 setter 方法设置的所需值。但是,我认为这种方法比面向对象更程序化,因为我只是按顺序按程序调用这些计算方法并填充我的值对象。

那么我可以使用/查看什么设计(...设计模式,也许?)或最佳实践,以便此代码成为面向对象的。

代表性代码(我现在拥有的):

class Adapter {   // this is my Java class
MyValueObject applyBusinessLogic(Input object)
{
MyValueObject vo = new MyValueObject();
vo.setA(computeA());
vo.setB(computeB());
vo.setC(computeC());
return vo;
}

String computeA() { ...some logic... return a;}
String computeB() { ...some logic... return b;}
String computeC() { ...some logic... return c;}
}

class MyValueObject {
String a;
String b;
String c;

public void setA(String a)
{
this.a = a;
}

public void setB(String b)
{
this.b = b;
}

public void setC(String c)
{
this.c = c;
}
}

最佳答案

恕我直言,这实际上取决于职责和计算方法的作用。您应该牢记 SRP (http://en.wikipedia.org/wiki/Single_responsibility_principle) 来进行 OO 设计。还有高内聚和松耦合的原则。

如果computeA()、B和C不相关,那么你的Adapter类应该被拆分。如果它们相关,那么您的 Adapter 类应该以不同的方式命名以表达它的实际用途。例如:税收计算器。

然后您可以创建一个新类,接收 TaxCalculator 和执行应用的 MyValueObject。或者只是将 apply 留在计算器中(尽管这对于一个类来说是两个责任,这通常是不好的)。在后一种情况下,也许您可​​以调用类 TaxCalculationsSetter 或类似的东西,并将计算方法设为私有(private)。瞧,您将再次满足 SRP。 ;-)

永远记住,“什么是责任”,是一个有点主观的事情。

我希望这已经澄清了一些事情。

关于java - 用于填充值对象的面向对象代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13989601/

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