业务代表模式包含以下主要角色:
1. 业务服务接口(Business Service Interface): 定义了业务服务的接口,表示层通过这个接口访问业务服务的功能。
2. 具体业务服务(Concrete Business Service): 实现了业务服务接口,提供实际的业务逻辑和功能。
3. 业务代表(Business Delegate): 提供了一个抽象接口,客户端通过业务代表访问业务服务。业务代表隐藏了表示层与业务服务之间的具体实现细节。
4. 查找服务(Lookup Service): 用于查找业务服务对象的服务,业务代表使用它来获取业务服务的实例。
5. 客户端(Client): 表示层的组件,通过业务代表访问业务服务,而不需要直接与业务服务交互。
以下是一个简单的业务代表模式的示例:
// 业务服务接口
interface BusinessService {
void doProcessing();
}
// 具体业务服务A
class ConcreteBusinessServiceA implements BusinessService {
@Override
public void doProcessing() {
System.out.println("Processing task by Service A");
}
}
// 具体业务服务B
class ConcreteBusinessServiceB implements BusinessService {
@Override
public void doProcessing() {
System.out.println("Processing task by Service B");
}
}
// 业务代表
class BusinessDelegate {
private BusinessService businessService;
public void setServiceType(String serviceType) {
if ("ServiceA".equalsIgnoreCase(serviceType)) {
businessService = new ConcreteBusinessServiceA();
} else if ("ServiceB".equalsIgnoreCase(serviceType)) {
businessService = new ConcreteBusinessServiceB();
}
}
public void doTask() {
businessService.doProcessing();
}
}
// 查找服务
class BusinessLookUp {
public BusinessService getBusinessService(String serviceType) {
if ("ServiceA".equalsIgnoreCase(serviceType)) {
return new ConcreteBusinessServiceA();
} else if ("ServiceB".equalsIgnoreCase(serviceType)) {
return new ConcreteBusinessServiceB();
}
return null;
}
}
// 客户端
class Client {
private BusinessDelegate businessDelegate;
public Client(BusinessDelegate businessDelegate) {
this.businessDelegate = businessDelegate;
}
public void doTask() {
businessDelegate.doTask();
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
BusinessDelegate businessDelegate = new BusinessDelegate();
BusinessLookUp businessLookUp = new BusinessLookUp();
businessDelegate.setServiceType("ServiceA");
Client client = new Client(businessDelegate);
client.doTask();
businessDelegate.setServiceType("ServiceB");
client.doTask();
}
}
在这个示例中,业务代表模式通过BusinessDelegate类隐藏了客户端和具体业务服务之间的关系。客户端通过Client类调用业务代表的doTask方法,而不需要关心具体业务服务的实现。业务代表在内部使用BusinessLookUp来查找具体的业务服务实例。通过修改BusinessDelegate中的setServiceType方法,客户端可以切换不同的业务服务实现,而不需要修改客户端代码。这种方式提高了系统的灵活性和可维护性。
转载请注明出处:http://www.zyzy.cn/article/detail/11864/设计模式