抽象文档模式
声明一个抽象文档类,通过继承document类,将属性声明成一个Map类型,重写对象的get和put方法,这样做的好处是可以随时添加属性,然后再声明接口,接口类继承文档类,声明一个获取属性的方法,这样具体类可以继承抽象文档类,实现属性接口,可以拼装一个具体的类,且不需要任何额外代码,适用于多个相似对象,但有几个属性不同。
具体代码参考文档底部引用的github项目,有具体实现类、也有更好的讲解。
使用抽象文档模式当:
- 需要即时添加新属性
- 你想要一种灵活的方式来以树状结构组织域
- 你想要更宽松的耦合系统
抽象工厂模式
通过实现接口,在不同的系列产品对象下实现预定义的业务代码,然后通过工厂类根据运行中传入的类型,生成具体实例,通过操控参数类型来生成对应的对象,好处是添加新对象时无需修改原来的对象,没有暴露对象具体实现,只暴露了工厂接口,坏处是,需要写更多对象类,在新对象业务方法有所不同时,很难兼容原有接口。
活跃对象模式
声明了一个对象,其中实现了具体方法执行和同步方法,具体类继承该对象,直接调用其中方法执行,就可以实现多线程同步。
其用处:
想要实现多线程方法,只调用其API而不需要暴露其具体执行。
适配器模式
通过一个适配器类,实现你想要转换的类的接口,重写实现方法,在具体实例中使用适配器类实例化转换类,从而达到使用重写方法。
使用适配器模式当
- 你想使用一个已有类,但是它的接口不能和你需要的所匹配
- 你需要使用一些现有的子类,但是子类化他们每一个的子类来进行接口的适配是不现实的。一个对象适配器可以适配他们父类的接口。
聚合器模式
对于多个微服务接口进行封装,调用一次聚合器,聚合器调用多个微服务,返回一个聚合数据。
大使模式
在调用远程服务的时候,添加一层封装后的对象,实例化Client类型,不用关注client类型里面的具体实现代码,在其中可以添加日志记录、负载均衡、队列各种中间服务,更加灵活,在修改具体实现时,无需修改调用代码。
大使适用于无法修改或极难修改的旧式远程服务。 可以在客户端上实现连接性的功能,而无需更改远程服务。
- 大使提供了用于远程服务的本地接口。
- 大使在客户端上提供日志记录,断路,重试和安全性。
API网关模式
使用微服务架构时会面临同时调用多个微服务封装一个数据的情况,我们可以通过访问API网关,由API网关向两个微服务调用方法,好处是客户不需要调用多个微服务。
在以下情况下使用API网关模式
- 你正在使用微服务架构,并且需要聚合单点来进行微服务调用。
异步方法调用模式
通过异步控制类,通过控制类里封装好的异步方法启动线程,进行多线程操作。
引用
GitHub - iluwatar/java-design-patterns: Design patterns implemented in Java