第一:思维决定方式。
在GOF提及的23种设计模式中,有多种设计模式最后编写出来的代码非常相似,为什么它们又被归类为不同的设计模式呢?由于它们各自面对的问题不同,要解决的思考出发点不同,虽然最后采取的形式是相似的。
第二:多问问why,而不仅仅局限于how。
多想想为何就那样,非它不可,而不是应该怎样。
第三:面向对象的典型思维特征:多态、继承、重载、组合、封装。
设计模式都是迎合这些目标,贯彻这些思维特征,也能演化出自己的设计模式。
第四:学习把"行为"抽象成对象。
对象不仅仅是简单的实体,也可把某一类行为抽象成为一个对象。
第五:敢于把一个大的对象作为参数传递。
在某些情况下,传递一个大的对象要比传递几个简单的参数更有效。
第六:设计模式不是极端的方案,而是在性能和复用可扩展之间做了一个折衷的权衡。
在某些情况下设计模式未必就是最好的方案,但设计模式应该是一个权衡得最好的方案。
很多时候并不是我们面对一个简单的场景去试图套某个模式,而是当我们用简单方法解决不了时,诉诸于设计模式。
今天具体学习了一下三种设计模式:
策略模式:解决扁平化的问题;
装饰模式:修饰已有功能;
访问者模式:访问者与被访问者分工配合,解耦解决某个问题。