Java设计模式笔记

0、组合关系(Composition)和聚合关系(Aggregation)区别

组合关系是Part-of,依赖是对象必要的一部分,表现为在构造方法中要初始化

聚合关系是Has-a,依赖虽然是对象一部分,但也可以没有,变现为构造方法没有依赖也可以

1、装饰模式和代理模式的区别

装饰模式:目标类与装饰类是组合关系,目标类是通过构造器传进来的,编译时不确定实现类;

代理模式:目标类与代理类是组合关系,目标类在代理类内生成,编译时已经确定;

2、享元模式这里讲解的比较好

https://www.geeksforgeeks.org/flyweight-design-pattern/

https://blog.csdn.net/wwwdc1012/article/details/82833965

a、固有属性,不可变

b、非固有属性要传参

3、桥接模式(Bridge Design Pattern)

桥接模式应用于拥有多个可变维度的场景之中,利用组合关系,将不同维度的属性通过构造方法传进对象,达到维度可变。

比如https://www.journaldev.com/1491/bridge-design-pattern-java

4、建造者模式(Builder Design Pattern)和模板方法模式(Template Method Design Pattern)

建造者模式是创建之前先调用过程方法,比如生成Gson对象

Gson gson = new GsonBuilder()     
.registerTypeAdapter(Id.class, new IdTypeAdapter())   
.enableComplexMapKeySerialization()
.serializeNulls()   
.setDateFormat(DateFormat.LONG)  
.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
.setPrettyPrinting()
.setVersion(1.0)    
.create();

而模板方法模式是将固定流程限定在基类里,后续再创建对象之前,都会按照既定的流程去生成。 

建造者模式针对的是多参数的问题,模板方法针对的是流程问题。工厂模式针对的是子类很多的问题。

5、外观模型

为系统外的调用提供简化的接口调用,简化的调用使得多了很多功能相似的方法,违背了“开闭原则”,也违背了“迪米特法则”,有利有弊。

6、组合模式

组合模式虽然用到了组合这个词,但其实是一种聚合关系(Has-a)

7、命令模式

命令模式之所以能方便做撤销功能,是因为将操作和参数封装成了command,存储操作的时候,只需要存储command就行。

8、策略模式(Strategy Design Pattern )和状态模式(State Design Pattern)区别

a、解决的问题不一样,策略模式是要做某一件事情,有这么多的方式可以选择;而状态模式是根据当前的状态,决定接下来要做什么。前者是有的选,实现过程不同,但达到效果都是一样的;而后者是没得选,由状态决定了后续的过程

b、策略模式不同策略之间是没有关联的,而状态模式不同模式之间是有关联的,比如枚举的关系

c、策略模式后续处理是不需要上下文的,而状态模式是要根据上下文处理的,所以在state接口里面,接口方法往往会把context传进后续处理方法当中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值