在C#中实现的基于外观或门面模式打造的业务应用案例

以前一直没有想过写一些东西来把项目中用到的知识点及技术实现做一个归纳整理并分享出来。现在打算逐渐的把项目中的一些东西整理并分享出来,与大家共勉!

外观或门面模式相比大家都比较清楚了,现在就该模式在实际项目中的应用做一个实例分享。

外观或门面模式的核心点就是表现层直接依赖于这里的实现,外观里直接引用工厂装配的业务类结果,屏蔽了业务类的实现,

一般常规外观模式都这样,但基于经验这里也可以留一个口子,让这里也能够间接的改变工厂装配业务类结果,便于灵活应用。

下面就拿实际项目WMS中的一个模块仓库管理来与大家分享,先简单描述下实现思路:

1、定义外观类BizFacadeWarehouse,该类负责暴露业务工厂结果给表现层,也就是上节选定的业务类4个功能方法

2、在该类的构造函数中,通过业务工厂的Create方法来初始化抽象业务类,也就是依据应用来选定具体实现

3、BizFacadeWarehouse类定义

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;

using Warehouse.Biz;
using Warehouse.BizFactory;
using Entitys.ComonEnti;
using Common;
using FrameCommon;
using Warehouse.Entities;

namespace Warehouse.BizExecFacade
{
public class BizFacadeWarehouse
{
BizFactoryWarehouse comWarehousebizF = new BizFactoryWarehouse();
Warehousebiz comWarehousebiz = null;

public string err = string.Empty;

public BizFacadeWarehouse(SysEnvironmentSerialize _envirObj)
{
string _currlang = _envirObj.I18nCurrLang;
try
{
this.comWarehousebiz = this.comWarehousebizF.Create("one", _envirObj);
}
catch (Exception ex)
{
err = ex.ToString();
}
}

/// <summary>
/// 获取数据库仓库
/// </summary>
/// <param name="warehouse"></param>
/// <param name="ddnmParams"></param>
/// <param name="errStr"></param>
/// <param name="ListBizLog"></param>
/// <returns></returns>
public List<WAREHOUSE> GetWarehouses(WAREHOUSE warehouse, DistributeDataNodeManagerParams ddnmParams, List<string> errStr, List<SSY_LOGENTITY> ListBizLog)
{
return this.comWarehousebiz.GetWarehouses(warehouse, ddnmParams, errStr, ListBizLog);
}

/// <summary>
/// 获取数据库仓库货架
/// </summary>
/// <param name="bizobj"></param>
/// <param name="ddnmParams"></param>
/// <param name="errStr"></param>
/// <param name="ListBizLog"></param>
/// <returns></returns>
public List<STORAGE_RACK> GetStorage_racks(STORAGE_RACK bizobj, DistributeDataNodeManagerParams ddnmParams, List<string> errStr, List<SSY_LOGENTITY> ListBizLog)
{
return this.comWarehousebiz.GetStorage_racks(bizobj, ddnmParams, errStr, ListBizLog);
}

/// <summary>
/// 获取数据库仓库货架区域
/// </summary>
/// <param name="bizobj"></param>
/// <param name="ddnmParams"></param>
/// <param name="errStr"></param>
/// <param name="ListBizLog"></param>
/// <returns></returns>
public List<STORAGE_RACK_ZONE> GetStorage_rack_zones(STORAGE_RACK_ZONE bizobj, DistributeDataNodeManagerParams ddnmParams, List<string> errStr, List<SSY_LOGENTITY> ListBizLog)
{
return this.comWarehousebiz.GetStorage_rack_zones(bizobj, ddnmParams, errStr, ListBizLog);
}

/// <summary>
/// 获取绑定记录
/// </summary>
/// <param name="bizobj"></param>
/// <param name="ddnmParams"></param>
/// <param name="pager"></param>
/// <param name="errStr"></param>
/// <param name="ListBizLog"></param>
/// <returns></returns>
public List<PACK_BINDING> GetPack_bindingPager(PACK_BINDING bizobj, DistributeDataNodeManagerParams ddnmParams, SSY_PagingParam pager, List<string> errStr, List<SSY_LOGENTITY> ListBizLog)
{
return this.comWarehousebiz.GetPack_bindingPager(bizobj, ddnmParams, pager, errStr, ListBizLog);
}

}
}

获取实例源码请入QQ群706224870,在群文件中下载。

转载于:https://www.cnblogs.com/maotou/p/facade.html

设计模式在实际业务应用中的介绍之3——外观或门面模式Facade对AOP装配业务工厂的应用...相关推荐

  1. 外观模式 门面模式 Facade 结构型 设计模式(十三)

    外观模式(FACADE) 又称为门面模式 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口,这一接口使得这一子系统更加易于使用. 意图解析 随着项目的持续发展,系统基本 ...

  2. .net 有哪些主流的设计模式_「设计模式自习室」门面模式 Facade Pattern

    前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...

  3. 【设计模式自习室】门面模式 Facade Pattern

    前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...

  4. 设计模式在实际业务应用中的介绍之2——业务工厂

    在C#中实现的基于工厂模式打造的业务应用案,全部都是干货. 以前一直没有想过写一些东西来把项目中用到的知识点及技术实现做一个归纳整理并分享出来.现在打算逐渐的把项目中的一些东西整理并分享出来,与大家共 ...

  5. 大熊君说说JS与设计模式之(门面模式Facade)迪米特法则的救赎篇------(监狱的故事)...

    一,总体概要 1,笔者浅谈 说起"门面"这个设计模式其实不论新老程序猿都是在无意中就已经运用到此模式了,就像我们美丽的JS程序员一样不经意就使用了闭包处理问题, 1 functio ...

  6. (转)淘淘商城系列——在业务逻辑中添加缓存

    http://blog.csdn.net/yerenyuan_pku/article/details/72871268 上文我们一起学习了如何使用Spring容器来管理Redis单机版和集群版实现,本 ...

  7. 微信openid 服务器备案,微信生态中的 openId、unionID和业务系统中的ID

    在进行微信生态相关的开发的时候,经常会遇到一个术语:openID.openID 在微信生态下几乎无处不在:你想要识别用户身份?需要 openID 你需要给用户推送消息?需要 openID 除了 ope ...

  8. 企业应用业务需求变化的分析与应对-业务需求中的逻辑

    企业应用系统实际上就是用信息化技术对业务需求进行描述,借助计算机为企业用户服务的一个平台.应用系统必须要处理业务需求的变化,无论是开发阶段,还是维护阶段. 业务需求的变化其实就是逻辑的变化,那么业务需 ...

  9. 设计模式之门面模式和调停者模式

    文章目录 前言 一.门面模式Facade 1.定义 2.案例说明 3.代码实现 二.调停者模式Mediator 1.定义 2.案例说明 3.代码实现 总结 前言 本人对于设计模式的学习,仅供参考! 一 ...

  10. 组合模式 桥接模式 java_java设计模式5.组合模式、门面模式、享元模式、桥接模式...

    组合模式 在面向对象的语言中,树结构有着巨大的威力,一个基于继承的类型的等级结构便是一个数结构,一个基于合成的对象结构也是一个数结构.组合模式将部分与整体的关系用树结构表示出来,使得客户端把一个个单独 ...

最新文章

  1. fiddler抓取https请求
  2. 第一份工作是选择安逸,还是勇敢尝试?
  3. raspberry pi_Linux Foundation安全徽章,Raspberry Pi成功,白宫工具等
  4. [LeetCode]--35. Search Insert Position
  5. 基类成员函数和派生类成员函数不构成重载
  6. qt下的跨目录多工程编译
  7. (day 52 - 二叉搜索树) 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
  8. 论文笔记_S2D.47_2017-ICRA_SemanticFusion(语义融合):采用卷积神经网络CNN的稠密3D语义建图
  9. HFSS19 官方中文教程系列 L03
  10. 自动阅读行业又出新招?离线阅读脚本套路满满
  11. CDA的考试体系与人才能力模型
  12. 区块链在供应链领域的应用案例
  13. Python Lost connection to MySQL server during query
  14. 如何将大量图片文件合并成一个*.bin文件
  15. Unity Mesh(五) Mesh 立方体Cube贴图以及六个面分别贴不同的图片
  16. 塔罗牌微信小程序源码
  17. 在SSD268G上运行第一个demo
  18. [转]诺奖得主警告人类不应和外星人说话
  19. 侯捷是个自恋狂,建议大家不要读他翻译的书
  20. CCleaner V2.12.660 极度精简单文件版

热门文章

  1. 提示不支持IE6的脚本
  2. C语言随机读写数据文件(二)
  3. 如何使用Java代码获取Android移动终端Mac地址
  4. Java编程实现获取本机IP和计算机名的功能
  5. Dataset增加行数据及常用方法
  6. Ajax请求生成中文乱码问题
  7. C++ 前向声明(转载)
  8. select、poll、epoll的区别
  9. python中rawinput用法_Python 中 input()用法 以及与raw_input() 的区别
  10. 常用的正则表达式,妈妈再也不用担心我不会写正则表达式了