我有两个类,生成器和处理器。前者生成存储为成员属性的ArrayList。后者处理ArrayList。
main Class实例化每个对象中的一个并调用适当的方法。
有什么更好的练习?
发布于 2011-02-10 04:58:14
Processor
是否有理由关心数据来自何处,或者请求生成更多的数据?如果没有,就尽可能以一种通用的方式传递数据-例如Iterable<T>
、Collection<T>
或List<T>
。
这样,您的代码就没有那么紧密耦合,而且更容易测试--在测试Generator
之前,您甚至不必编写Processor
,如果Processor
单元测试有问题,它们很可能是由Processor
中的错误引起的,而不是Generator
中的错误。
发布于 2011-02-10 04:59:09
我倾向于传递生成器,而不是它的属性(我假设是通过方法公开的)。
为什么?我更喜欢将接口和耦合保持在更高的抽象层上。通过传递对象而不是属性,我可以在稍后阶段更改生成器,并减少我必须重构的代码部分。
想象一下--在某个阶段,您可能希望传递的不仅仅是list属性,还可能是其他的内容。通过传递更高级别的对象,您可以限制重构。
当然,这都取决于这个对象的使用范围有多广。如果确实决定传递属性列表,则是传递列表本身,还是传递不可修改的副本。
发布于 2011-02-10 05:00:26
我想知道为什么这不是一个物体。如果处理器改变了生成器的状态,为什么这个方法不是生成器的一部分呢?更好的封装方式。一个与生成器的方法的接口将给您一些良好的灵活性,也。生成器可以有一个处理器接口,您可以传入一个具体的实例来根据需要更改实现。
对象是状态和行为的结合。处理器的组合将使您能够坚持这一点,并且仍然可以灵活地更改对数据所做的操作。只是一个想法..。
https://stackoverflow.com/questions/4957358
复制