要谈自己对于面向对象的设计原则的认识,是离不开所学的软件系统分析与设计的知识的。
主要说说三个方面的认识:
1.面向对象的设计原则一开放-封闭原则
2 解释:一个软件实体应该对扩展开发,对修改关闭。
2 例证:新浪微博开放API,软件的升级;
2 原理:一个设计良好的应用程序应该充分考虑到开发和维护阶段需求的频繁变化,通常情况下,添加一个新的功能需要做出很多修改,我们应该使对已有代码的修改最小化,因为他们已经经过了测试。对现有代码做出修改将会以一种不可预料的方式影响它们的已有功能。
2 使用:开放封闭原则是说我们应该努力设计不需要修改或是很少修改的模块。在扩展系统的行为时,我们只需要添加新的代码,而不需要修改或是很少修改已有的代码。一般可以通过添加新的子类和重写父类的方法来实现。
2 思考:在设计那些需要经常性的修改变化的系统时,好的面向对象设计应该更多的使用抽象,多态,继承,接口等面向对象设计方法。
2.面向对象的设计原则二单一职责原则
2 解释:一个类应该只受一种变化的影响。
2 例证:邮件协议POP3,SMTP,IMAP等,如果使用不同的协议处理邮件的内容的话,需要以规定方式格式化内容字段。
2 原理:如果你有多个原因去改变一个类,那么应该把这些引起变化的原因分离开,把这个类分成多个类,每个类只负责处理一种改变。当你做出某种改变时,只需要修改负责处理该改变的类。当我们去改变一个具有多个职责的类时可能会影响该类的其他功能。
2 使用:单一职责原则简单而直观,只是使用起来有一定的困难。
2 思考:单一职责原则虽然在现实的使用中有一定的实现难度,但是,在思考和设计软件开发过程中的类的过程中,这是一种很好的策略,可以写出容易识别的类。
3. 面向对象的设计原则三接口隔离原则
2 解释:接口隔离原则表明客户端不应该被强迫实现一些他们不会使用的接口,应该把胖接口中的方法分组,然后用多个接口代替它,每个接口服务于一个子模块。
2 例证:继承的接口中包含不必要的方法,这样的接口称之为胖接口。应该避免这样的接口设计。
2 原理:当我们设计应用程序的时候,如果一个模块包含多个子模块,那么我们应该小心对该模块做出抽象。设想该模块由一个类实现,我们可以把系统抽象成一个接 口。但是当我们想要添加一个新的模块扩展程序时,如果要添加的模块只包含原系统中的一些子模块,那么就会强迫我们实现接口中的所有方法,并且还要编写一些 新方法。这样的接口被称为胖接口,使用这样的接口将会给系统引入一些不正确的行为。
2 使用:根据接口隔离原则,一个灵活的设计不应该包含胖接口。
2 思考:将胖接口分成多个接口,不再强迫子模块实现不必要的方法。
面向对象的设计原则还有其他的方面,不过我认为这三个方面与我学习的软件系统分析与设计的关系联系最紧密。这三个设计原则体现的设计思想体现在所学习的这么课程上。
软件系统分析与设计主要学习什么?就是学习软件系统设计方法和思想。
面向对象的设计原则的目的是什么?更好的设计软件系统。
由此看来,虽然就是这简单的开放封闭,单一职责,接口隔离十二个字,但是简单的字里面缺失包含着大思想的,就阐释清楚了软件系统设计的核心。
软 件系统的分析与设计,就是如何的给设计方提供充分有效的信息,如何利用可能的有效信息,合理组织技术方案,这对于目前的大型软件系统的开发与设计上企业核 心价值的投入产出比是分不开的,消耗大量的资源开发的软件系统,如何发挥最大的价值,例如使用效率,升级换代等等,好的设计是很重要的。
面向对象是软件设计的一个重要的方面,面向对象的设计方法专注于大型软件系统的架构与开发,所以理解并掌握这些设计原则是很必要的。在日常的编程学习中,需要经常思考自己的程序编写是否符合这些设计原则。