我一直在为自己的实现进行代码拆分,最终我有3种不同的方法来实现。我不确定Java是否需要代码拆分,但是我打算这样做。
第一种方法是将功能包含在服务类中。
@Component("fooService")
public final class FooService {
public Foo getFoo(UUID id) {
Foo foo = findById(id);
validateFoo(f);
return foo;
}
private void validateFoo(Foo foo) {
if (foo.isBanned) {
throw new Exception("Banned...");
}
}
}
第二种方法是创建一个单独的类并将其命名为FooValidity
。使用这种方法,我需要将validateFoo
设置为静态。
public final class FooValidity {
public static void validateFoo(Foo foo) {
if (foo.isBanned) {
throw new Exception("Banned...");
}
}
}
@Component("fooService")
public final class FooService {
public Foo getFoo(UUID id) {
Foo foo = findById(id);
FooValidity.validateFoo(f);
return foo;
}
}
第三种方法是将FooValidity
设置为@Service()
并懒惰地调用它。
@Service("fooValidity")
public final class FooValidity {
public void validateFoo(Foo foo) {
if (foo.isBanned) {
throw new Exception("Banned...");
}
}
}
@Component("fooService")
public final class FooService {
private final FooValidity fooValidity;
public FooService(org.springframework.context.annotation.@Lazy FooValidity fooValidity) {
this.fooValidity = fooValidity;
}
public Foo getFoo(UUID id) {
Foo foo = findById(id);
fooValidity.validateFoo(f);
return foo;
}
}
哪种方法是最好的,或者我真的需要像这样进行代码拆分吗?
答案 0 :(得分:0)
它们都是正确的,让我仔细看看: