面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。(百度百科)
关于OO设计原则,网上众说纷纭,有6大设计原则,也有5大设计原则的说法。暂时先把这些概念记录下来,以便后来理解。
1.SRP(Single Responsibility Principle) 单一职责原则
我的理解为设计出来的一个模块对应其所预期的职责。进一步简化,就是设计出来的一个类,仅仅负责一个功能。
2.OCP(Open Close Principle) 开闭原则
引用一句话:Openfor extension , Close for Modification ,对修改关闭,对扩展开放,便于重用。字面意思上有点蛋疼,不修改,只扩展。实际上就是很大程度上的要求开发者需要严谨的设计风格,软件的可扩展性比较强,当然,不纯粹的为了迎合设计原则而不修改,我所理解的真正意义是一次行把正确的事情做好。
讲重点。对抽象编程,抽象稳定。
进一步描述。创建的类依赖一个抽象概念,抽象固定,也就是说修改封闭。类可以继承抽象,重写方法,修改就是开放的。
3.LSP(Liskov Substitution Principle)里氏替换原则
继承下来的类具有共同的特征。
DBC(Design By Contract) 契约式设计:
有2个条件:
调用方法之前,确认传参的正确性,错误的参数即违反契约精神,不执行。
如果传参正确,执行的方法的结果也必须符合要求。
如果存在继承关系。子类的条件必须比父类的条件相同或者更严格。
4.DIP(Dependency InversionPrinciple)依赖倒置原则
抽象编程,也就是依赖与接口编程,暂时这么理解吧。
5.ISP(Interface SegregationPrinciple)接口分离原则
不同的接口有不同的职能,避免一个接口实现多个功能。