日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

制定统一业务逻辑基础规则

發布時間:2025/3/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 制定统一业务逻辑基础规则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?????? 在系統開發前都會制定代碼編寫規則,這樣能夠很好的規范系統代碼編寫,提高代碼可閱讀性和可維護性。同樣在編寫業務邏輯上自己也會定義基礎處理規則,這樣就能夠清楚明確系統中所有業務邏輯的處理過程(主要也是方便對業務邏輯的理解和維護);在實際情況中業務邏輯的規則是比較復雜和多變的,似乎制定一個統一的規則比較難。但是事實上可以采用Command模式制定業務邏輯的基礎規則,用于描述業務邏輯執行的切入點;對于一些復雜的規則(如業務流程處理等)可以通過Template Method模式對基礎規則進行擴展;這種制定規則只適用于單一職責業務邏輯,對于一些多職責業務邏輯只能選擇別的方式。

?????? 在軟件開發中解決問題的方法很多,雖然都是解決同一問題但不同人實現的方法卻可以完全不一樣;因此以下描述的內容只是本人在項目制定的業務邏輯基礎規則。在系統設計時會制定以下兩種業務邏輯的基礎規則:

1)? 多職責規則;用于業務數據的基礎操作,主要是添加,修改和刪除。

2)? 單一職責規則;用于擴展出查詢、統計和復雜處理的基礎規則(實際上是規范所有單一職責的業務邏輯)

?

多職責規則

?????? 這種規則主要用于規范基于業務基礎操作操作的業務邏輯;職責包括對業務數據進行添加,修改和刪除等操作。這種規則在數據庫處理系統中比較常見,其行為也比較統一。在制定這種規則相對比較簡單,制定相關職責方法即可:

?????? ???? /// <summary>

???? /// 模型操作規則

???? /// </summary>

???? public interface IModelLogic

???? {

???????? /// <summary>

???????? /// 添加模型對象

???????? /// </summary>

???????? void Add();

???????? /// <summary>

???????? /// 刪除模型對象

???????? /// </summary>

???????? void Delete();

???????? /// <summary>

???????? /// 更新模型對象

???????? /// </summary>

???????? void Edit();

???? }

為了更適合應用,可以實現IModelLogic建立一個方便處理的Adapter

???? public class ModelLogicAdapter:IModelLogic

???? {

???????? private object mIndex = null;

???????? /// <summary>

???????? /// 獲取模型對象相關索引

???????? /// </summary>

???????? private object mModelObj = null;

?

?

???????? protected object Index

???????? {

????????????? get

????????????? {

?????????????????? return mIndex;

????????????? }

???????? }

????

???????? /// <summary>

???????? /// 獲取當前模型對象

???????? /// </summary>

???????? protected object ModelObj

???????? {

????????????? get

????????????? {

?????????????????? return mModelObj;

????????????? }

????????????? set

????????????? {

?????????????????? mModelObj = value;

????????????? }

???????? }

????????

?

?

???????? public ModelLogicAdapter()

???????? {

???????? }

???????? public ModelLogicAdapter(object index)

???????? {

????????????? mIndex = index;

????????????? OnLoadModel(mIndex);

???????? }

????????

???????? #region IModelLogic 成員

???????? /// <summary>

???????? /// 加載模型對象

???????? /// 派生類重寫

???????? /// </summary>

???????? /// <param name="index">模型相關索引</param>

???????? protected virtual void OnLoadModel(object index)

???????? {

?????????????

???????? }

???????? /// <summary>

???????? /// 更新當前模型對象

???????? /// </summary>

???????? public void Add()

???????? {

????????????? // TODO:? 添加 ModelLogicAdapter.Add 實現

????????????? CheckModule();

????????????? OnAdd();

???????? }

???????? protected virtual void OnAdd()

???????? {

????????????? DAOContext.Add(ModelObj);

???????? }

?

???????? /// <summary>

???????? /// 刪除當前模型對象

???????? /// </summary>

???????? public void Delete()

???????? {

?

????????????? // TODO:? 添加 ModelLogicAdapter.Delete 實現

????????????? CheckModule();

????????????? OnDelete();

???????? }

???????? protected virtual void OnDelete()

???????? {

????????????? DAOContext.Delete(ModelObj);

???????? }

?

???????? /// <summary>

???????? /// 編輯當前模型對象

???????? /// </summary>

???????? public void Edit()

???????? {

????????????? // TODO:? 添加 ModelLogicAdapter.Edit 實現

????????????? CheckModule();

????????????? OnEdit();

???????? }

???????? protected virtual void OnEdit()

???????? {

????????????? DAOContext.Edit(ModelObj);

???????? }

?

???????? #endregion

???????? private void CheckModule()

???????? {

????????????? if(ModelObj == null)

?????????????????? throw(new LogicException(TipMessage.MODELOGIC_ERROR_MODELOBJECT_ISNULL));

???????? }

???????? /// <summary>

???????? /// 獲取相關索引方法

???????? /// </summary>

???????? /// <param name="table">實體相關表名稱</param>

???????? /// <returns>索引值</returns>

???????? protected int GetRecordIndex(string table)

???????? {

????????????? lock(this.GetType())

????????????? {

?????????????????? int index=0;

?????????????????? System.Collections.IList list = (DBMapping.TablePK.TableName== table).List();

?????????????????? TablePK item;

?????????????????? if(list.Count ==0)

?????????????????? {

?????????????????????? index =1;

?????????????????????? item = new TablePK();

?????????????????????? item.TableName = table;

?????????????????????? item.RecordIndex = index;

?????????????????????? DBMapping.TablePK.Insert(item);

?????????????????? }

?????????????????? else

?????????????????? {

?????????????????????? item = (TablePK )list[0];

?????????????????????? item.RecordIndex++;

?????????????????????? index = item.RecordIndex;

?????????????????????? DBMapping.TablePK.Update(item);

?????????????????? }

?????????????????? return index;

????????????? }

???????? }

???? }

ModeLogicAdapter在原有基礎上引入了Template Method模式進行了一個小小的擴展,規定相關行為都通過OnXXX方法去描述執行;基于規則的派生類就必須通過重寫OnXXX方法來編寫具體操作行為,對于一些共性的行為可以統一編寫在相關職責方法中。

具體應用

?????? ???? /// <summary>

???? /// 用戶信息業務規則操作對象

???? /// </summary>

???? public class UserLogic : ModelLogicAdapter

???? {

???????? public UserLogic()

???????? {

???????? }

???????? public UserLogic(string usercode):base(usercode){}

???????? public Entities.SysUser UserItem

???????? {

????????????? get

????????????? {

?????????????????? return (Entities.SysUser)ModelObj;

????????????? }

????????????? set

????????????? {

?????????????????? ModelObj =? value;

????????????? }

???????? }

???????? protected override void OnLoadModel(object index)

???????? {

?????????????

????????????? ModelObj = DBMapping.SysUser.GetByIndex((string)Index);

???????? }

???????? protected override void OnAdd()

???????? {

????????????? if((DBMapping.SysUser.UserCode == UserItem.UserCode).Count() >0)

????????????? {

?????????????????? throw(new LogicException(TipMessage.USERLOGIC_ERROR_HAVERECORD));

????????????? }

????????????? base.OnAdd ();

???????? }

????????

???? }

單一職規則

?????? 由于這種規則的情況非常多(包括:查詢業務邏輯、統計業務邏輯和流程處理等;事實所有單一職責的業務規則都從此規則派生下來)因此在制定時要非常簡單不能摻雜過多的東西;通過Command模式來規范業務邏輯處理的入口點,當面臨處理很多節點時可以通過Template Method模式進行擴展。

?????? 制定基礎規則

???? /// <summary>

???? /// 基礎規則接接口

???? /// 用于描述業務邏輯執行點

???? /// </summary>

???? public interface IBaseLogic

???? {

???????? ?void Execute();

???? }

???? 擴展出基于條件的業務邏輯規則(常用于數據查詢和數據統計)

?????? /// <summary>

???? /// 條件描述接口

???? /// </summary>

???? public interface IFilter

???? {

???????? /// <summary>

???????? /// 獲取條件表達式對象

???????? /// </summary>

???????? /// <returns>條件表達式對象</returns>

???????? HFSoft.Data.Expressions.IExpression GetFilter();

???? }

???? /// <summary>

???? /// 基于條件業務邏輯描述規則

???? /// </summary>

???? public interface IFilterLogic:IBaseLogic

???? {

????????

???????? /// <summary>

???????? /// 獲取或設置條件對象

???????? /// </summary>

???????? IFilter Filter

???????? {

????????????? get;

????????????? set;

???????? }

???? }

?????? 基于條件規則的具體應用

?????? ???? /// <summary>

???? /// 用戶查詢邏輯類

???? /// </summary>

???? public class UserQuery:IFilterLogic

???? {

???????? public UserQuery()

???????? {

????????????? //

????????????? // TODO: 在此處添加構造函數邏輯

????????????? //

???????? }

???????? private System.Collections.ArrayList mItem;

???????? public System.Collections.ArrayList Items

???????? {

?

????????????? get

????????????? {

?????????????????? return mItem;

????????????? }

???????? }

???????? #region IFilterLogic 成員

????????

???????? public void Execute()

???????? {

????????????? // TODO:? 添加 UserQuery.Execute 實現

????????????? ?mItem =(System.Collections.ArrayList) Filter.GetFilter().List();

?????????????

???????? }

???????? private IFilter mFilter;

???????? public IFilter Filter

???????? {

????????????? get

????????????? {

?????????????????? // TODO:? 添加 UserQuery.Filter getter 實現

?????????????????? if(mFilter == null)

?????????????????????? return new UserFilter();

?????????????????? return mFilter;

????????????? }

????????????? set

????????????? {

?????????????????? // TODO:? 添加 UserQuery.Filter setter 實現

?????????????????? mFilter = value;

????????????? }

???????? }

?

???????? #endregion

???????? [Serializable]

???????? public class UserFilter:FilterAdapter

???????? {

????????????? public override HFSoft.Data.Expressions.IExpression GetFilter()

????????????? {

?????????????????? HFSoft.Data.Expressions.Expression exp = new HFSoft.Data.Expressions.Expression();

?????????????????? exp.Table = DBMapping.SysUser;

?????????????????? return exp;

????????????? }

?

???????? }

???? }

制定簡單流程規則

???? /// <summary>

???? /// 基礎流程規則

???? /// </summary>

???? public abstract class FlowBase:IBaseLogic

???? {

???????? public FlowBase()

???????? {

????????????? //

????????????? // TODO: 在此處添加構造函數邏輯

????????????? //

???????? }

???????? #region IBaseLogic 成員

???????? /// <summary>

???????? /// 流程執行點

???????? /// </summary>

???????? public void Execute()

???????? {

????????????? // TODO:? 添加 FlowBase.Execute 實現

??????????????? OnInit();

??????????????? Flowing();
??????????????? OnEnd();

???????? }

???????? /// <summary>

???????? /// 加載流程所需要數據

???????? /// </summary>

???????? protected abstract void OnInit();

???????? /// <summary>

???????? /// 流程處理過程

???????? /// </summary>

???????? protected abstract void Flowing();

???????? /// <summary>

???????? /// 流程處理結束過程

???????? /// </summary>

???????? protected abstract void OnEnd();

???????? #endregion

???? }

?

以上是在項目開發過程制定的業務邏輯基礎處理規則,有興趣的朋友發表一下自己的看法或自己是如何制定相關規則的。

總結

以上是生活随笔為你收集整理的制定统一业务逻辑基础规则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品激情视频 | 超碰在线观看免费版 | 在线成人看片 | 中文字幕9 | 亚洲一二三四区 | 热九九精品 | 欧美成人va | 国产一在线 | 丰满熟妇人妻中文字幕 | 男女无遮挡做爰猛烈视频 | 欧美高清69hd | 黄色网免费看 | 中文字幕中出 | 狠狠精品干练久久久无码中文字幕 | 粉嫩av一区二区三区 | 亚洲视频一二区 | 欧美偷拍一区二区 | 国产乱码一区二区三区在线观看 | www.精品久久 | av网址在线免费观看 | 无码h黄肉3d动漫在线观看 | 国产午夜手机精彩视频 | 国产精品久久久久久一区 | 日韩av电影中文字幕 | 久久久网| 国产一区二区三区免费 | 想要xx在线观看 | 日韩中文字幕一区 | 亚洲aa在线 | 色综合成人 | 人人干天天干 | 骚虎tv | 丁香八月婷婷 | 久草网视频在线观看 | 国产成人精品一区二 | 欧洲色区 | 西欧free性满足hd老熟妇 | 尤物精品 | 中文字幕一区二区三区夫目前犯 | 啪啪自拍视频 | 尹人综合网 | 五月天婷婷激情视频 | 国产日韩精品在线观看 | 免费看黄色漫画 | 中文在线观看免费 | 欧美操老女人 | 特黄视频在线观看 | 中文字幕第一页在线视频 | 噼里啪啦国语高清 | 在线观看免费毛片 | 91深夜视频| 天天舔天天摸 | 久久性爱视频网站 | 激情视频久久 | 牛牛超碰| 激情丁香婷婷 | 国产精品一二三四区 | 日本成人免费观看 | 日韩欧美激情在线 | 在线观看国产网站 | 久久婷婷影视 | 精品无码一区二区三区的天堂 | 97青草 | 国产精品乱码一区二区三区 | 豆花视频在线 | 欧美在线视频一区 | 国产精品久久久久久妇女 | 美国毛片基地 | 欧美日本激情 | 久久久99精品 | 午夜不卡福利视频 | av鲁丝一区鲁丝二区鲁丝 | 久久久久久久久久久久久久久久久久 | 欧洲熟妇的性久久久久久 | 五月婷激情 | 91玉足脚交嫩脚丫在线播放 | 曰批女人视频在线观看 | 婷婷四房综合激情五月 | 99精品久久 | 亚洲精品h| 久久久久亚洲av无码专区首jn | 欧美一级夜夜爽 | 97超碰97 | 日日爱av| 狠狠撸在线观看 | 97热久久 | 日韩在线不卡视频 | 中国黄色三级视频 | free黑人多人性派对hd | 欧美激情18 | 国产欧美精品一区二区在线播放 | 一本久久a精品一合区久久久 | 性插插视频 | 在线免费观看国产精品 | 一级黄色免费网站 | av鲁丝一区鲁丝二区鲁丝 | 污视频网站免费在线观看 | 黑人3p波多野结衣在线观看 | 中文字幕成人 |