设计模式简介
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。
业务代表模式
业务代表模式(Business Delegate Pattern)用于对表示层和业务层解耦。它基本上是用来减少通信或对表示层代码中的业务层代码的远程查询功能。在业务层中我们有以下实体。
客户端(Client) - 表示层代码可以是 JSP、servlet 或 UI java 代码。
业务代表(Business Delegate) - 一个为客户端实体提供的入口类,它提供了对业务服务方法的访问。
查询服务(LookUp Service) - 查找服务对象负责获取相关的业务实现,并提供业务对象对业务代表对象的访问。
业务服务(Business Service) - 业务服务接口。实现了该业务服务的实体类,提供了实际的业务实现逻辑。
实现
先定义一个服务的接口
public interface Service {
public void handle();
}
实现这个接口
public class FrontEndService implements Service{
@Override
public void handle() {
System.out.println("我是一名前端工程师,我会html css js");
}
}
public class AfterEndService implements Service{
@Override
public void handle() {
System.out.println("我是一名后端工程师,我会Python");
}
}
定义一个服务查找类
public class FindService {
public Service find(String type) {
if("front".equalsIgnoreCase(type)) {
return new FrontEndService();
}else {
return new AfterEndService();
}
}
}
定义一个业务代表
public class Delegate {
public String type;
public Delegate(String type) {
this.type = type;
}
public void doFind() {
Service service = new FindService().find(type);
service.handle();
}
}
定义一个客户端
public class Client {
public void getDevelopmentServices(Delegate delegate) {
delegate.doFind();
}
}
模拟这个业务走的流程
public static void main(String[] args) {
// 1开始的需求-》2客户端-》3业务代表-》4业务查询类-》5分发到具体的服务类
Client client = new Client();
client.getDevelopmentServices(new Delegate("front"));
client.getDevelopmentServices(new Delegate("after"));
}
结果
我是一名前端工程师,我会html css js
我是一名后端工程师,我会Python