状态模式
当一个对象的行为取决于状态并且运行时状态不断改变就需要考虑状态,状态模式的结构就是 工作类 包含状态的引用,有一个工作方法,而状态是抽象状态,有不同的状态类,也有一个状态行为方法,客户端new出工作类设入状态类,然后调用工作类的额工作方方法,工作方法再调用状态的状态行为
适配器模式
一般用作对接接口或者项目维护的时候,譬如A类与B类要对接,但是发现接口的参数配不上,这是就需要用到适配器,结构为 被调用即暴露出去的的工作类,适配器继承工作类重写方法,内部包含一个要是适配的类的额引用,内部调用这个类的方法,实现客户端不用改变调用方式,照样可以执行到需要适配的类的方法,看起来有点像是代理模式
备忘录模式
在实际工作中,我有时候需要恢复一个的类的状态,在内存中回复,这是就要用到备忘录了。主要结构是工作类,工作类有个方法可以创建备忘录对象的方法,也有一个方法读取备忘录设置状态,还有一个管理类,这里面包含一个备忘录。客户端的调用逻辑是
创建工作类,调用工作方法,执行创建备忘录方法,把备忘录设入管理类,要回复工作类的状态时把管理类的备忘录放入读取备忘录方法就行
组合模式
需求中体现部分和整体的层次结构时,你希望用户忽略整体和部分的区别,统一调用里面的对象,典型的例子是总公司下面有有部门和分公司,而分公司下面又有一个部门或者分公司,相当于一个树了。这种还是抽象一个接口,上面有添加/删除/工作的方法。下面有两种实现,一种分公司的实现,里面包含一个他下属的集合,分别实现add/remove/工作方法,而另外一个就是部门的实现,这种没有子节点,add/remove实现空代码块就行,实现工作方法就行。客户端就是new出具体的实现类最后拼成一个树
命令模式
举个吃饭的例子,去吃饭点菜,加入没有服务员直接向厨师直接点菜而且人很多的话,这种体验一定不会好,可以厨师不一定记得谁是谁的菜。这是就要用到命令模式,你下一个个命令,命令再去调用厨师去做具体的菜。结构为 调用类,抽象命令类与具体的实现,动作执行类,主要流程是客户端new个调用类,把具体的命令设入调用类,然后执行命令的方法,命令里面的方法调用动作执行类去工作。命令模式支持撤销和回滚,在有命令队列的情况下,拿出来重新设置就行
抽象工厂的改进
抽象工厂多了一个抽象工厂类,有n个方法创建特定的抽象产品。最简单是用简单工厂加反射快速实例化类,不用再写分支判断了,反射是通过读取配置写的配置工厂生成具体的类就行
设计模式里面的组合与聚合
在设计类的时候,如果你要考虑用继承进行扩展,一定要先想想,因为原则先考虑组合与聚合的方式,组合是整体和部分不可分割,就像是大雁和大雁的翅膀一样,聚合是指包含关系,并不一定是同一个对象,如大雁和雁群