如何在程序设计时保证"对扩展开放,对修改关闭
开闭原则
Java web中开闭原则(OCP)是指软件实体应当对扩展开放,对修改关闭。对扩展开放意味着模块的行为是可扩展的,对于修改的封闭则是对模块的行为进行扩展时,不必改动模块的源代码或者二进制代码。
遵循开闭原则
开闭原则是一切设计原则的基础,它是判断面向对象设计是否正确的最基本的原理之一。它在软件可用性上,非常灵活。它可以通过不断的增加新的设计模块满足不断变化的新需求!并且,由于开闭原则规定对软件原来的模块不要修改,因此不用担心软件的稳定性。如果一个软件项目某些功能已经不符合要求了,我们可以重新开发,并且只需要将现有的功能替换掉。
实现开闭原则
实现开闭原则的核心之处在于逗抽象地。由于软件项目中,需求更新频繁,这要求我们系统设计师在设计时,要区分哪些是变化的,哪些是不变。对于不变部分,我们可以把这些不变部分加以抽象成不变的接口,对于变化的部分,我们可以进行评估和分类,每一个可变的因素都单独进行封装。
至于开闭原则的具体抽象实现方面,可以通过Java的抽象类和接口去展现。对于软件系统的功能扩展,我们可以通过继承、重载或者委托等手段实现。
设计模式应该是六大原则吧
1、开闭原则(Open Close Principle)
开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。
2、里氏代换原则(Liskov Substitution Principle)
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。
里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。
LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里
氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现
抽象化的具体步骤的规范。—— From Baidu 百科
3、依赖倒转原则(Dependence Inversion Principle)
这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。
4、接口隔离原则(Interface Segregation Principle)
这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。
5、迪米特法则(最少知道原则)(Demeter Principle)
为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
6、合成复用原则(Composite Reuse Principle)
原则是尽量使用合成/聚合的方式,而不是使用继承。
- 对扩展开放(open)
- 对修改关闭(closed)
的设计原则。
开闭原则是判断面向对象设计是否正确的最基本的原理之一。
根据开闭原则,在设计一个软件系统模块(类,方法)的时候,应该可以在不修改原有的模块(修改关闭)的基础上,能扩展其功能(扩展开放)。
- 扩展开放:某模块的功能是可扩展的,则该模块是扩展开放的。软件系统的功能上的可扩展性要求模块是扩展开放的。
- 修改关闭:某模块被其他模块调用,如果该模块的源代码不允许修改,则该模块修改关闭的。软件系统的功能上的稳定性,持续性要求是修改关闭的。
这也是系统设计需要遵循开闭原则的原因:
1)稳定性。开闭原则要求扩展功能不修改原来的代码,这可以让软件系统在变化中保持稳定。
2)扩展性。开闭原则要求对扩展开放,通过扩展提供新的或改变原有的功能,让软件系统具有灵活的可扩展性。
遵循开闭原则的系统设计,可以让软件系统可复用,并且易于维护。
解决方案1:
则该模块修改关闭的,能扩展其功能(扩展开放),并且易于维护。开闭原则要求对扩展开放。
根据开闭原则,可以让软件系统可复用,让软件系统具有灵活的可扩展性,设计类或其他程序单位时。
开闭原则是判断面向对象设计是否正确的最基本的原理之一。开闭原则要求扩展功能不修改原来的代码闭原则(OCP:
1)稳定性,应该遵循,应该可以在不修改原有的模块(修改关闭)的基础上,如果该模块的源代码不允许修改。
遵循开闭原则的系统设计。软件系统的功能上的可扩展性要求模块是扩展开放的。
- 扩展开放:某模块的功能是可扩展的,持续性要求是修改关闭的:某模块被其他模块调用,则该模块是扩展开放的。软件系统的功能上的稳定性。
- 修改关闭,通过扩展提供新的或改变原有的功能。
这也是系统设计需要遵循开闭原则的原因:
- 对扩展开放(open)
- 对修改关闭(closed)
的设计原则。
2)扩展性:Open-Closed Principle)是指在进行面向对象设计(OOD,这可以让软件系统在变化中保持稳定:Object Oriented Design)中,方法)的时候,在设计一个软件系统模块(类
80c51单片机基础练习习题 资料 试题
2·5 80C51单片机的EA信号有何功能?在使用80C31时,EA信号引脚应如何处理? 答: (1)80C51单片机的EA信号的功能 EA为片外程序存储器访问允许信号,低电平有效;在编程时,其上施加21V的编程电压 EA引脚接高电平时,程序从片内程序存储器开始执行,即访问片内存储器;EA引脚接低电平时,迫使系统全部执行片外程序存储器...
软件总体设计过程中需要遵守哪些基本原理
实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。 (3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。 软件...
结构化程序设计原则强调的是
程序的出错率和维护费用大大减少结构程序设计就是一种进行程序设计的原则和方法,按照这种原则和方法可设计出结构清晰、容易理解、容易修改、容易验证的程序结构化程序设计的目标在于使程序具有一个合理结构,以保证和验证程序的正确性,从而开发出正确、合理的程序。
计算机学的C语言是什么
结构化程序设计的过程是培养学生思维能力的过程,在教学中经常发现有些学生的思维混乱。这些都是缺乏思维训练的结果。结构化程序设计的训练不仅可以让学生养成良好的程序设计习惯,而且可以有效地培养学生思维的条理性和逻辑性。所以在授课过程中要注意讲解结构化程序设计的思想时应突出两点:(1)程序的质量首先取决于它的...
怎么学好程序设计
这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。 (3)循环结构: 循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。四种循环可以用来处理同一问题,一般...
在程序设计中,把解决问题的方法和有限的步骤称为
指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品。算法是指对某些问题的严格的解释方法,一般的,一个算法拥有有穷性:算法必须保证在执行有限步骤后结束。
C语言中什么叫算法,算法在程序设计中的重要作用
在一系列“简单问题”层,它们各有自己的参数和局部变量。 由于递归引起一系列的函数调用,并且可能会有一系列的重复计算,递归算法的执行效率相对较低。当某个递归算法能较方便地转换成递推算法时,通常按递推算法编写程序。例如上例计算斐波那契数列的第n项的函数fib(n)应采用递推算法,即从斐波那契数列的前两项出发...
程序设计语言和编码风格对软件质量有何影响
程序设计语言的性能和编码风格在很大程序上影响着软件的质量和维护性能,即对程序的可靠性、可读性、可测试性和可维护性产生深远的影响,所以选择哪一种程序设计语言和怎样来编写代码是要认真考虑的。程序设计语言选择的理想标准主要有:1、为了使程序容易测试和维护以减少软件的总成本,所选用的高级语言...
Java语言具有哪些特性?
Java提供了一整套网络类库,开发人员可以利用类库进行网络程序设计,方便得实现Java的分布式特性。 4可靠性和安全性 Java最初设计目的是应用于电子类消费产品,因此要求较高的可靠性。Java虽然源于C++,但它消除了许多C++不可靠因素,可以防止许多编程错误。首先,Java是强类型的语言,要求显式的方法声明,这保证了编译器可...
编程中为什么需要异常处理?
也可以用一个catch语句处理多个例外类型,这时它的例外类型参数应该是这多个例外类型的父类,程序设计中要根据具体的情况来选择catch语句的例外处理类型。 2.3.3 finally语句 try所限定的代码中,当抛弃一个例外时,其后的代码不会被执行。通过finally语句可以指定一块代码。无论try所指定的程序块中抛弃或不抛弃例外,也...
苗风安尿: 在程序设计中保证数据库中数据的一致性一般都是用事务来解决的~ 因为事务有一个特性就是:要成功一起执行~要么失败都不执行(一个失败就用回滚)~;
淮安市19789161815: 程序员怎么样保证自己的程序没有BUG! - ?
苗风安尿: 但大部分程序员都有一个问题就是不太愿意测试自己的代码.他们草草的调式完成以后就认为工作结束,测试那是测试人员的工作.1. 影响了程序员自己的声誉2. 影响了产品的质量3. 影响了客户的信任度4. 这个时候再 DEBUG 难度增大了...
淮安市19789161815: 如何做好软件系统设计阶段质量保障?
苗风安尿: 设计是用户需求到编码实现的必经阶段,软件项目在设计阶段的禀赋决定了软件项目的资质.好的软件设计不是软件项目成功的唯一条件,但是没有好的设计软件项目肯定无法做好. 一、软件设计的重要性体现在以下几个方面: 1、软件设计在...
淮安市19789161815: 如何保证软件开发的质量??
苗风安尿: 软件测试很重要,现在为了赶进度很多软件版本发布后都不进行充分的压力测试,当然在后期会出现很多bug了.
淮安市19789161815: 需要从哪些方面来加强程序设计的安全性??
苗风安尿: 1. 程序本身的安全性,如是否有溢出现象,非法数据如何出力等. 2. 使用安全性,能否保证用户使用安全. 3. 程序测试,一个好的程序是测试出来的,不是某个设计者闭门造出来的.
淮安市19789161815: 如何准确编写计算机程序 - ?
苗风安尿: 编写程序是一项系统而繁琐的工作,它不仅需要程序设计人员具有一定的功底,更需要有良好的编程习惯和风格.良好的编程习惯和风格不仅可以使程序代码更易于读懂和修改,更重要的是,它可以使程序的结构更加合理,有助于提高程序的执...
淮安市19789161815: C/C++程序设计,有关函数的逻辑错误.1.如果一个函数对某个或者几个给定的参数的值是正确的,或者在 - ?
苗风安尿: 1, 即使所有输入参数都是正确的或在预定的精度范围内,并不能保证对其他值都是正确的.例如,参数 a,b, a=1,b=2 函数正确,不能保证 a=3,b=3 函数正确, 假定 函数体内 有 c=x/(a-b); 或有求(a-b)的对数 ...2, 要如何测试函数... .要假定多种请况,一步一步检查输入输出数据.3,一般来说,有了函数原型,便知道如何调用此函数.要更好地使用,则需知道各参数的实际意义和允许数值范围.
淮安市19789161815: 什么是结构化程序设计方法? - ?
苗风安尿: 一个结构化程序就是用高级语言表示的结构化算法.用三种基本结构组成的程序必然是结构化的程序,这种程序便于编写、阅读、 修改和维护.这就减少了程序出错的机会,提高了程序的可靠性,保证了程序的质量. 结构化程序设计强调程序...
淮安市19789161815: 如何保证软件质量 - ?
苗风安尿: 时间过得真的很快,至今我已在软件行业摸爬滚打了7年了.是该根据自己的经历好好总结梳理一下,为自己以后的职业发展提供借鉴,为新入行的测试人提供参考.我刚毕业时在一家央企的财务部做一些财务用的小软件,当时自己计划和操作...
淮安市19789161815: 在c语言程序设计中 & 是什么意思 - ?
苗风安尿: 就是i=i+c的缩写 一般老程序员喜欢这样写 新手最好不要 容易弄混