架构之旅~一个操作的返回要有一个标准,看我的公用消息类

简介:

当我们在开发过程中,遇到添加,编辑,删除等操作,这些操作对于数据库来都是成功的,所以在DATA层的CURD操作一般没有返回值,而对于业务层就不同的,我们需要将处理结果返回给WEB层,而如果DATA出现异常了,这时业务层要知道,并把结果进行处理,然后返回给WEB层,而返回的载体是我们要统一的,因为我们一个bool类型是不能满足要求的,它可以还会伴随其它信息,包括可能出现的实体完整信息。

看看我的VMessage类,它有一个属性IsComplete,它的值由它内部的messageList集合控制,而这个集合如果没有信息,说明没有异常出现,IsComplete就是true,反之它为false,而我们可以通过AddItemt 和Clear等集合操作对messageList进行追加,清除等操作。

好了,现在看一下大致的代码结构,大家可以直接应用到程序中:

 1  /// <summary>
 2     /// 通用消息序列类
 3     /// </summary>
 4     public class VMessage : IEnumerable<string>
 5     {
 6         /// <summary>
 7         /// 是否完成
 8         /// </summary>
 9         public bool IsComplete
10         {
11             get
12             {
13                 return messageList.Count == 0;//如果没有异常记录,返回返回为true
14             }
15         }
16 
17         /// <summary>
18         /// 可以返回一个IEntity类型的实体
19         /// </summary>
20         public EntityBase Entity { get; set; }
21 
22         /// <summary>
23         /// 消息序列
24         /// </summary>
25         List<string> messageList = new List<string>();
26 
27         /// <summary>
28         /// 向序列中添加新的项
29         /// </summary>
30         /// <param name="item"></param>
31         public void AddItem(string item)
32         {
33             this.messageList.Add(item);
34         }
35 
36         /// <summary>
37         /// 向序列中追加一个新的序列
38         /// </summary>
39         /// <param name="itemRange">序列对象</param>
40         public void AddItemRange(IEnumerable<string> itemRange)
41         {
42             this.messageList.AddRange(itemRange);
43         }
44         /// <summary>
45         /// 消息对象
46         /// </summary>
47         public Object Object { get; set; }
48 
49         /// <summary>
50         /// 清空所有现有项
51         /// </summary>
52         public void Clear()
53         {
54             this.messageList.Clear();
55         }
56 
57         /// <summary>
58         /// 索引器
59         /// </summary>
60         /// <param name="index">索引</param>
61         /// <returns>相应值</returns>
62         public string this[int index]
63         {
64             get { return this.messageList[index]; }
65 
66         }
67 
68         /// <summary>
69         /// 得到所有消息,每条用逗号分开
70         /// </summary>
71         /// <returns></returns>
72         public string GetMessage()
73         {
74             return string.Join(",", messageList);
75         }
76         #region IEnumerable<string> 成员
77 
78         public IEnumerator<string> GetEnumerator()
79         {
80             return this.messageList.GetEnumerator();
81         }
82 
83         #endregion
84 
85         #region IEnumerable 成员
86 
87         IEnumerator IEnumerable.GetEnumerator()
88         {
89             return this.messageList.GetEnumerator();
90         }
91 
92         #endregion
93     }

应用在程序中,可能是这样的结构

BLL层:

而在WEB层直接调用它,可以判断它的VM结果

本文转自博客园张占岭(仓储大叔)的博客,原文链接:架构之旅~一个操作的返回要有一个标准,看我的公用消息类,如需转载请自行联系原博主。

目录
相关文章
|
6月前
|
Java
javaEE架构必须懂的知识Base类
javaEE架构必须懂的知识Base类
30 0
|
17天前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
26 0
|
1月前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
21 2
|
3月前
|
Java 测试技术 Android开发
Android项目架构设计问题之使用反射调用类的私有方法如何解决
Android项目架构设计问题之使用反射调用类的私有方法如何解决
29 0
|
4月前
|
SQL 存储 开发者
云架构数据倾斜问题之聚合操作导致数据膨胀如何解决
云架构数据倾斜问题之聚合操作导致数据膨胀如何解决
|
6月前
|
架构师 开发工具 C++
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
|
6月前
|
存储 Java 编译器
用王者荣耀告诉你,什么叫类与对象,思维图+核心+架构让你一步到位
用王者荣耀告诉你,什么叫类与对象,思维图+核心+架构让你一步到位
|
6月前
|
程序员 Python
类的设计奥秘:从代码到架构的科普全解
类的设计奥秘:从代码到架构的科普全解
95 2
|
6月前
|
存储 消息中间件 算法
深度思考:架构师必须掌握的五大类架构设计风格
数据流风格注重数据在组件间的流动,适合处理大量数据。调用返回风格则强调函数或方法的调用与返回,过程清晰明了。独立构件风格让每个构件独立运作,通过接口交互,提升灵活性和可重用性。虚拟机风格则模拟完整系统,实现资源的高效利用。
365 0
深度思考:架构师必须掌握的五大类架构设计风格
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
Transformer类架构的发展带动多模态融合
【1月更文挑战第21天】Transformer类架构的发展带动多模态融合
112 1
Transformer类架构的发展带动多模态融合