介绍:
https://blog.csdn.net/qq_35642036/article/details/79663378 这个博客写的非常好,基本参考他学习设计模式。
设计模式作为一种概念性的规律总结,我们要先弄明白类与类之间的几种组合方式。
方式1 类继承类 A extend B
方式2 类实现接口 A implement B
方式3 成员变量 private A a;
方式4 构造方法、普通方法的参数 method (A a){ }
方式5 临时变量 method(){ A a = new A(); }
方式6 反射 class.forName("A");
方式7 子父类 Parent p = new son();
类模式和对象模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。结构型模式:适配器模式(其中一种实现方式),行为型模式:模板方法模式和解释器模式,这三种属于类模式,其他的都是对象模式。
设计模式就是类与类之间不同的方式组合,还有就是纯概念性的组合后能实现什么功能来分类 例如 build 装饰器 策略
创建型模式
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用新的运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。
最终返回值是一个你需要创建的对象。
结构型模式
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。
最终组合到一起提供一种大的功能。
行为型模式
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。这些设计模式特别关注对象之间的通信。
最终侧重于做事与步骤,
其实还有两类:并发型模式和线程池模式。
创建型设计模式
建造者模式
@Bean
public Docket basedocApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("fuxi-fetch-kuaidi100")// 返回docket
.apiInfo(apiInfo()) // 返回对象ApiSelectorBuilder,并将new的docket传入进去
.select()// 返回的是ApiSelectorBuilder
.paths(basedocPaths())
.build();// 返回docket
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("fuxi抓取快递100数据服务")
.description("fuxi抓取快递100数据服务")
.build();
}
这里有两种方式:
1 直接new一个你需要的类 然后再设置需要的属性值最后调用,每次设置完返回当前new的这个对象。build()方法
2 new一个创建类,把需要的属性字段值赋给这个建造类 ,最后build()方法再统一传给需要创建的类里,这里的创建类就像配置文件类一样。
public class ApiInfoBuilder {
private String title;
private String description;
private String termsOfServiceUrl;
private String contact;
private String license;
private String licenseUrl;
private String version;
...
public ApiInfoBuilder licenseUrl(String licenseUrl) {
this.licenseUrl = licenseUrl;
return this;
}
public ApiInfo build() {
return new ApiInfo(title, description, version, termsOfServiceUrl, contact, license, licenseUrl);
}
}