设计模式&委派模式(Delegate Pattern)
Delegate Pattern
委派模式(Delegate Pattern)又叫做委托模式,是一种面向对象的设计模式,允许对象组合实现与继承相同的代码重用。它的基本作用就是负责任务的调度和分发,也可以理解为是一种特殊的静态代理,但是代理模式注重的是代理的过程,而委派模式注重的是结果。委派模式属于行为模式,不属于(GOF)23种设计模式。
Delegate(被委托者)
委托模式示例
简单的委托模式
Printer拥有针式打印机RealPrinter的实例,Printer拥有的方法print()将处理转交给RealPrinter的方法print()。
public class RealPrinter {// 被委托者
void print() {
System.out.print("something");
}
}
public class Printer {// 委托者
RealPrinter p = new RealPrinter(); // 创建一个被委托者
void print() {
p.print(); // delegation
}
}
public class MainTest {
public static void main(String[] args) {
Printer printer = new Printer();
printer.print();//something
}
}
业务委托模式
业务委托模式(Business Delegate Pattern)用于对表示层和业务层解耦。它基本上是用来减少通信或对表示层代码中的业务层代码的远程查询功能。在业务层中我们有以下实体。
客户端(Client)表示层代码可以是 JSP、servlet 或 UI java 代码。
业务委托类(Business Delegate)一个为客户端实体提供的入口类,它提供了对业务服务方法的访问。
查询服务(LookUp Service)查找服务对象负责获取相关的业务实现,并提供业务对象对业务委托对象的访问。
业务服务(Business Service)业务服务接口。实现了该业务服务的实体类,提供了实际的业务实现逻辑。
创建BusinessService接口。
public interface BusinessService {
void doProcessing();
}
创建实体服务类。
public class EJBService implements BusinessService{
public void doProcessing() {
System.out.println("Processing task by invoking EJB Service");
}
}
public class JMSService implements BusinessService{
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 businessDelegate;
public Client(BusinessDelegate businessDelegate){
this.businessDelegate = businessDelegate;
}
public void doTask(){
businessDelegate.doTask();
}
}
原文地址:https://blog.csdn.net/weixin_45817985/article/details/134726624
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_39408.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!