设计模式
设计模式简介
看懂UML类图和时序图
UML统一建模语言
UML类图及类图之间的关系
类关系记忆技巧
如何正确使用设计模式
优秀设计的特征
面向对象设计原则
创建型设计模式
工厂模式
抽象工厂模式
简单工厂模式
静态工厂模式(Static Factory)
单例模式
建造者模式
原型模式
结构型设计模式
适配器模式
桥接模式
组合模式
装饰器模式
外观模式
享元模式
代理模式
过滤器模式
注册模式(Registry)
行为型设计模式
责任链模式
命令模式
解释器模式
中介者模式
备忘录模式
迭代器模式
观察者模式
状态模式
策略模式
模板模式
访问者模式
规格模式(Specification)
J2EE 设计模式
MVC 模式
业务代表模式
组合实体模式
数据访问对象模式(DAO模式)
前端控制器模式
拦截过滤器模式
空对象模式
服务定位器模式
传输对象模式
数据映射模式(Data Mapper)
依赖注入模式(Dependency Injection)
流接口模式(Fluent Interface)
其他模式
对象池模式(Pool)
委托模式
资源库模式(Repository)
实体属性值模式(EAV 模式)
反面模式
归纳设计模式
本文档使用 MrDoc 发布
-
+
首页
业务代表模式
> 业务代表模式(Business Delegate Pattern)用于对表示层和业务层解耦。它基本上是用来减少通信或对表示层代码中的业务层代码的远程查询功能。 业务代表模式直接将业务交给业务代表去调用,所有的内部接口都向业务代表暴露,通过业务代表统一去操作,用户不会直接面对内部系统。 Business Delegate 模式在表示层和业务层之间添加了一个抽象层。通过使用模式,我们获得了层之间的松散耦合,并封装了有关如何定位,连接和与构成应用程序的业务对象交互的知识。 ## 结构 我们将创建 *Client* 、 *BusinessDelegate* 、 *BusinessService* 、 *LookUpService* 、*JMSService* 和 *EJBService* 来表示业务代表模式中的各种实体。 *BusinessDelegatePatternDemo* 类使用 *BusinessDelegate* 和 *Client* 来演示业务代表模式的用法。 ![业务代表模式的 UML 图](https://www.runoob.com/wp-content/uploads/2014/08/business.svg) 在业务层中我们有以下实体。 * **客户端(Client)** - 表示层代码可以是 JSP、servlet 或 UI java 代码。 * **业务代表(Business Delegate)** - 一个为客户端实体提供的入口类,它提供了对业务服务方法的访问。 * **查询服务(LookUp Service)** - 查找服务对象负责获取相关的业务实现,并提供业务对象对业务代表对象的访问。 * **业务服务(Business Service)** - 业务服务接口。实现了该业务服务的实体类,提供了实际的业务实现逻辑。 ## 优点 - 低耦合高灵活:减少系统之间的相互依赖; - 高内聚:有问题外部也是不知道的,只会怪接口,所以内部好处理掉这些问题。 ## 缺点 - 不符合开闭原则,增删改可能影响原来功能和流程。 ## 适用场景 - 您需要在表示层和业务层之间进行松耦合 - 您想要协调对多个业务服务的调用 - 您想要封装服务查找和服务调用 ## 代码示例 ### Java ```java public interface BusinessService { public void doProcessing(); } public class EJBService implements BusinessService { @Override public void doProcessing() { System.out.println("Processing task by invoking EJB Service"); } } public class JMSService implements BusinessService { @Override public void doProcessing() { System.out.println("Processing task by invoking JMS Service"); } } public class BusinessLookUp { public BusinessService getBusinessService(String serviceType){ if(serviceType.equalsIgnoreCase("EJB")){ return new EJBService(); }else { return new JMSService(); } } } public class BusinessDelegate { private BusinessLookUp lookupService = new BusinessLookUp(); private BusinessService businessService; private String serviceType; public void setServiceType(String serviceType){ this.serviceType = serviceType; } public void doTask(){ businessService = lookupService.getBusinessService(serviceType); businessService.doProcessing(); } } public class Client { BusinessDelegate businessService; public Client(BusinessDelegate businessService){ this.businessService = businessService; } public void doTask(){ businessService.doTask(); } } public class BusinessDelegatePatternDemo { public static void main(String[] args) { BusinessDelegate businessDelegate = new BusinessDelegate(); businessDelegate.setServiceType("EJB"); Client client = new Client(businessDelegate); client.doTask(); businessDelegate.setServiceType("JMS"); client.doTask(); } } ``` 输出: ```txt Processing task by invoking EJB Service Processing task by invoking JMS Service ```
追风者
2022年3月18日 11:02
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码