Boz*_*zho 52
可以将一些类共有的一些操作移动到辅助类,然后通过对象组合使用它们:
public class OrderService {
private PriceHelper priceHelper = new PriceHelper();
public double calculateOrderPrice(order) {
double price = 0;
for (Item item : order.getItems()) {
double += priceHelper.calculatePrice(item.getProduct());
}
}
}
public class ProductService {
private PriceHelper priceHelper = new PriceHelper();
public double getProductPrice(Product product) {
return priceHelper.calculatePrice(product);
}
}
Run Code Online (Sandbox Code Playgroud)
使用辅助类可以通过多种方式完成:
static
并以静态方式访问它们,比如IOUtils.closeQuietly(inputStream)
关闭一个InputStream
不会抛出异常.XUtils
,而反过来又有依赖关系/需要由DI容器管理的classeesXHelper
(上面的示例只是一个示例 - 不应该根据域驱动设计进行讨论)
Pau*_*and 12
这些是"坐在代码主体侧面"的对象,并为对象执行一些工作.他们"帮助"对象完成它的工作.
例如,许多人都有一个Closer助手对象.这将采用各种可关闭的对象,例如java.sql.Statement,java.sql.Connection等,并将关闭该对象,并忽略它产生的任何错误.这往往是因为如果你在关闭一个对象时出错,那么你无论如何都无法做到这一点,所以人们就会忽略它.
而不是这个样板:
try {
connection.close();
} catch (SQLException e) {
// just ignore… what can you do when you can't close the connection?
log.warn("couldn't close connection", e);
}
Run Code Online (Sandbox Code Playgroud)
分散在代码库周围,他们只需调用:
Closer.close(connection);
Run Code Online (Sandbox Code Playgroud)
代替.例如,看番石榴closeQuietly.
归档时间: |
|
查看次数: |
54559 次 |
最近记录: |