我是设计模式的新手。我有一个小项目,其中java类在没有连接到服务器时使用虚拟数据。我在类中有一个if条件,它根据一个标志在虚拟数据和服务器数据之间切换。有没有更好的方式实现这一点?
发布于 2012-03-30 04:08:32
您应该编写一个接口来定义与服务器交互所需的所有方法,并引用该接口而不是具体的实现,而不是使用'if‘语句来控制代码。然后,让你的“虚拟数据”实现那个接口。
这样做的好处是,您的代码将以一种不依赖于服务器实现的方式编写。这将允许您在不更改客户端实现的情况下更改服务器上的详细信息。
发布于 2012-03-30 04:09:16
您需要一个Data Access Object,或者一个在请求程序和数据之间充当代理的对象。
您向DAO请求数据,根据它的配置,它会用您的服务器数据或其他数据进行响应。其他数据可能是新实例化的类、文本文件中的数据等。
In this image,“业务对象”是您的程序,“数据访问对象”是可重新配置的看门人,“传输对象”是所请求数据的对象表示,而“数据源”是您以前用来获取数据的接口。一旦“数据访问对象”就位,向其添加代码以“选择”所需的数据源(DummyDataSource、FileDataSource、JDBCDataSource等)就不难了。
发布于 2012-03-30 04:12:57
我建议使用Repository pattern来封装您的数据层。为Repository创建一个接口,并有两个具体的实现,一个用于虚拟数据,另一个用于服务器数据。使用Factory pattern创建存储库。工厂将根据您是否已连接来返回正确的存储库的具体实现。
https://stackoverflow.com/questions/9932639
复制相似问题