我想在一个新的应用程序中使用干净的architecuture,到目前为止它很好用。我将应用程序分为3个模块(演示文稿,数据和域),如下例所示:Android-CleanArchitecture
我的域模块中有一些实体。其中一个是用户。
public class User {
private String name;
public String name () {
return name;
}
public static class Builder {
...
}
}
我想使用AutoValue和一些扩展来摆脱样板代码。其中一个扩展名为AutoValue Parcel。现在我需要实现android.os.Parceable接口,它是android的一部分,不能在我的域模块中使用,因为它是Android依赖项。
实现此目的的正确方法是什么?
答案 0 :(得分:1)
对Android而言,实现Clear Architecture的理想有点困难,因为Android是一个完整的框架,即使在基本语言级别也有自己的规范。
我认为,由于特定工具免费级别的理想主要用于测试目的,因此 - 这应该是处理Android时的主要目标。
关于Parcelable本身,请考虑它只是为模型对象添加其他方法,以使Android OS能够在不同系统组件之间序列化/反序列化数据。因此,您在域级别的测试不会由Android操作系统运行,因此他们不应触及此方法,也不会影响您的测试。
请考虑Android中的其他几个API,这些API在单元测试中不可用,例如Uri,DateUtils,SparseArray等等......
通过嘲笑这些Android原语,我认为Roboelectric
可以派上用场。
说完所有......使用Clear Architecture,你的域级别应该与Presentation级别分开,所以基本上你会在两个层(可以共享界面)和两者都有模型对象他们可以使用AutoValue
,但是,只有在表达级别,您才能实现Parcelable
接口(需要它的接口,因为在此级别您将与系统交互并使用{ {1}})。
考虑到这种分离,域级别中的Android依赖项不是唯一的考虑因素,即表示级别可能会添加与域级别无关的信息。