【问题标题】:REST - Good design practiceREST - 良好的设计实践
【发布时间】:2014-04-22 10:25:36
【问题描述】:

我是 Windows Phone 开发的新手,我正在尝试编写一个从服务器检索数据并将其显示给用户的应用程序。我在服务器上有几个资源,比如说用户、任务和活动。我使用 RestSharp lib 从服务器检索数据。

获取用户示例:

public void Get(String id, LifeHunt.MainPage.UserReady userReady)
{
   var client = new RestClient(Deployd.REST_URL);
   var request = new RestRequest(resource + "/{id}", Method.GET);

   request.AddUrlSegment("id", id);

   client.ExecuteAsync<User>(request, response =>
   {
      if (response.StatusCode == System.Net.HttpStatusCode.OK)
      {
         userReady(callback.Data);
      }

   });
}

一旦检索到用户,我会调用作为回调传递的 userReady 方法,并将用户带到 MainPage 以显示它。

现在,我必须对所有用户、任务和活动的所有 CRUD(插入、获取、GetAll、更新、删除)函数重复整个过程。这意味着我将需要 15 种不同的回调方法,我认为这不是一个好的软件设计。

另一种方法是只使用一个回调方法并检查回调方法中传递的参数类型。但是我不认为这也是一个很好的解决方案。

我正在考虑为 CRUD 创建一个通用接口,由所有 User、Quest 和 Activity 类实现:

interface ICRUD<T>
{
   void GetAll(GenericCallback callback);
   void Get(GenericCallback callback);
   void Add(T item, GenericCallback callback);
   void Remove(String id, GenericCallback callback);
   void Update(T item, GenericCallback callback);
}

但是我真的不知道如何实现它,即使它是一个好方法。有人可以建议我一个好的设计解决方案吗?

【问题讨论】:

  • 我不清楚为什么拥有 15 个明显作用于数据的回调比拥有一个需要以某种方式处理 15 种不同情况的 catch all 方法更糟糕。

标签: c# windows-phone-8 restsharp


【解决方案1】:

使用 MVVM,创建一个 ViewModel 来保存您需要的所有数据并将其绑定到 View。然后使用直接返回所需数据的方法创建 Service 类(无回调)。在 ViewModel 中创建此 Service 的实例,并在需要时调用方法来获取和填充数据。

【讨论】:

    猜你喜欢
    • 2017-12-04
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    相关资源
    最近更新 更多