使用设计模式的好处是让你和其他开发人员之间有共享词汇,便于和其他开发人员进行沟通,同时也可以把你的思想架构的层次提高到模式层次,而不是仅停留在对象上。
关于设计模式的一些认识:设计模式不同于库以及框架,设计模式是一种设计思想,设计模式比库以及框架的等级更高。设计模式是对于OO问题的归纳与总结之后得出的如何组织类和对象以解决某种问题。而库和框架虽然提供了我们特定的实现,让我们的代码可以轻易地引用,但这并不算是设计模式(虽然有时候库和框架的设计会运用设计模式),所以设计模式没有库,但是设计模式有其相关的类目。
设计原则:
1)把应用中可能需要变化的地方提取出来,进行封装,好让其他部分不受影响,同时也方便这部分代码以后的修改以及扩展;
2)针对接口编程,而不是针对实现编程(注:这里“接口”只是一个概念,而“针对接口编程”本质是利用多态实现“针对超类型编程”,并不仅仅局限于interface,也可以是抽象超类,具体使用视情况而定);
3)多用组合,少用继承,因为组合建立系统具有很大的弹性,可以在运行时动态地改变行为。
策略模式:定义了算法族,分别封装起来(将可能会变化的事件提取出来,并分别封装),让他们之间可以互相替换(通过接口的互相组合),此模式让算法的变化独立于使用算法的客户。
设计模式的工具:
1)基础:
抽象、继承、多态、封装(即面向对象的四个基本特征)
2)原则:
封装变化;针对接口编程,而不是针对实现编程;多用组合少用继承
3)模式
策略模式
要点:
1)知道OO基础,并不足以设计出良好的OO系统,因为良好的OO系统必须具备可复用,可扩充,可维护(易维护)三个特性;
2)设计模式可以让我们建造出具有良好OO设计质量的系统,而模式是历经验证的OO设计模式,所以学习设计模式就是学习前人总结的OO设计相关的经验;
3)设计模式不是代码,而是针对设计问题的通用解决方案,所以设计模式不是发明,而是被发现;
4)大多数模式和原则,都着眼于软件变化的主题,并且大多数的模式都允许系统将局部变化独立于其他部分,所以我们常将变化的部分抽出来进行封装;
5)模式让开发人员之间有共享的语言,能够最大化沟通的价值。