面向对象编程(OOP)中最重要的是面向对象设计(OOD)。单独设计一个类并不难,难的是设计很多类并使用这些类及它们的实例构成复杂的应用程序来满足业务需求。
当使用面向对象的思想对需求进行分析(OOA面向对象分析)逐步构成设计成果时,如何确定类的范围,如何解决类与类,包括他们的实例之间的各种关系必须需要一些
原则作为指导才能较好的完成设计。
基本的面向对象设计原则:
1.单一职责(封装的范围和粒度)
一个类、方法应该只负责一项功能
2.替换原则(正确使用继承和多态)
将父类看成接口,子类完全可以替换父类
3.依赖倒置原则(解除依赖)
面向抽象(接口/依赖注入)编程,而不是面向实现编程
4.接口隔离原则(抽象的粒度)
接口的范围和粒度
5.迪米特原则(尽可能减少耦合)
一个对象应该尽可能少的了解其他对象
6.开闭原则(保持可扩展性)
对扩展开放,对修改关闭
设计模式
设计模式是一些常用的设计结构,是从大量的面向对象设计中识别并总结出来的。设计模式可以看成是特定设计场景下的经典设计方案。是一些被命名、分类、说明了使用场景的固定设计公式。由GOF<4人邦,即提出设计模式的4个人>最先总结出23种模式并出书论述而流行起来。学习设计模式可以丰富我们的设计思路,提升我们对设计的理解,可以使我们在设计上快速成长和成熟起来,也能在一定程度上提升设计的质量和速度。但不同的编程语言有不同的特点,也有不同的框架支持,因此对设计模式不可僵化理解和应用,而应该根据情况灵活变通取舍;也不可过度应用,为了应用设计模式而设计。
GOF提出的设计模式可分为3大类:
创建型模式:用于创建实例,如单例模式、工厂模式等
结构型模式:用于解决实例间的关系,如适配器模式、外观模式、代理模式等
行为型模式:用于实现某些功能:迭代器模式、观察者模式、模版方法模式等