这是我在构建一些数据层时最终得到的类:
public class DataRequest
{
public class DataResponse
{
public DataResponse(DataRequest req) { Request = req; }
public DataRequest Request {get; set;}
// ... here go some other fields ...
}
public Response { get; set; }
public DataRequest()
{
Response = new DataResponse(this);
}
public void Execute()
{
... Get some data and fill Response object ...
}
}
我需要请求知道响应,因为它用数据填充它;我需要响应以了解请求,因为当我将响应传递给其他一些方法时,我希望能够访问原始请求。
您是否看到此架构存在任何潜在问题,例如内存泄漏等,还是仅仅是一个糟糕的设计理念?
答案 0 :(得分:6)
这看起来并不太邪恶,但你也可以创建一个“DataContext”(想要一个更好的词),既暴露请求又响应,只让每个人知道上下文?即询问回复会询问的请求:
this.Context.Request.SomeProperty;
但这不是记忆问题; .NET不进行引用计数,因此您不必担心循环引用岛。如果它们都无法从其他对象中 ,则会收集它们。问题中的情景不会导致世界结束。
答案 1 :(得分:1)
我认为最好让一个管理器类同时包含请求和响应属性,它会给你提供比这更多的控制
public class DataManager
{
public DataRequest Request {get; set;}
public DataResponse Response {get; set;}
public void Excute ()
{
//do you logic here
}
}