Java常用代码有多种方法

时间:2016-03-06 14:13:19

标签: java

考虑

public Class Foo {

public void methodA {
//validate without Database the elements X, Y, Z
//validate with Database for only the element X
custom logic for Method A
}

public void methodB {
//validate without Database the elements X, Y, Z
//validate with Database for only the element X
custom logic for Method B
}

public void methodC {
//validate without Database the elements X, Y, Z
//validate with Database for only the element X
custom logic for Method C
}
public void methodD {
//validate without Database the elements X, Y, Z
//validate with Database for only the element X
custom logic for Method D
}
}

目前存在“没有数据库验证元素X,Y,Z的逻辑” “。这基本上是通过调用验证类的方法来实现的。这个验证类没有数据库连接。

现在我必须包含“仅对元素X验证数据库”的逻辑 ”。  我的选择是 a)将数据库连接到现有的验证类,然后进行数据库调用以检查X的存在。 b)创建单独的类,可以对元素X进行数据库处理。 c)有一个现有的类对其他元素进行数据处理,然后是x,y,z。将元素X的验证添加到此类。请注意,X,Y,z不是核心业务逻辑的一部分,而且这个类很大程度上与业务逻辑相关的DB有关。

我不熟悉设计模式,因此我正在检查是否存在涵盖此类问题的模式。如果上述三种解决方案都能达到目的,那么哪种解决方案更可取,否则你可以提出任何设计模式。

您是否认为我们可以使用AOP跨这些方法进行交叉切割以进行此验证,尽管它与系统无关。它是外围业务逻辑,但不是核心业务逻辑。

1 个答案:

答案 0 :(得分:0)

如果您希望使用数据库进行许多验证,我会选择a),并认为您保留了验证此类数据的功能(一个类:一个功能)。当然,这适用于本课程提供的合理数量的验证(如果太多,则会打破课程)。

否则,您认为使用连接和关闭数据库连接的方法创建public interface Connectable,以及为数据库连接提供业务逻辑的public abstract Connection implements Connectable是什么?最后,您可以将此抽象类扩展两次:一个用于现有类"它对其他元素执行数据库处理,然后执行x,y,z",另一个用于对DB进行实用程序检查,就像在此问题中提到的那样(保持两个兄弟姐妹课程的横向和#34;促使数据库连接的两种原因)。

话虽这么说,我确信有很多不同的方法可以做到这一点(你不缺乏想法,但你会缺乏找到一个声音和最佳解决方案,考虑到可能性:))。