在线培训:面向对象设计在线培训:面向对象设计第七章第七章目标掌握面向对象设计原则之开闭原则概述面向对象设计原则在使用面向对象思想进行系统设计时,总结出了若干面向对象设计原则,分别是单一职责原则开闭原则里氏代换原则依赖注入原则接口分离原则迪米特原则组合/聚合复用原则这些原则是面向对象设计的基石,坚持这些原则是提升面向对象设计质量的重要保障开闭原则定义:OCP:Openforextention,ClosedformodificationPrinciple,即对扩展开放,对修改关闭原则该原则的思想是:可以通过扩展来满足变化,而不需要修改代码,或者说在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展开闭原则举例:(原有设计)classSalary{//工资类publicvoidcomputerSalary(){System.out.println("采用工资算法一计算工资");}}classAccountant{//会计类publicvoidComputerSalary(Salarysalary){salary.computerSalary();}}classTestOCP{//测试类publicstaticvoidmain(String[]args){Accountantaccountant=newAccountant();accountant.ComputerSalary(newSalary());}}需求发生变化,按照工资算法二计算工资,如何实现呢需求发生变化,按照工资算法二计算工资,如何实现呢开闭原则举例:(不能很好的适应需求变化)classSalary{//工资类publicvoidcomputerSalary(){System.out.println(“采用工资算法二计算工资");}}classAccountant{//会计类publicvoidComputerSalary(Salarysalary){salary.computerSalary();}}classTestOCP{//测试类publicstaticvoidmain(String[]args){Accountantaccountant=newAccountant();accountant.ComputerSalary(newSalary());}}通过修改Salary类的computerSalary()来实现,不利于程序的稳定通过修改Salary类的computerSalary()来实现,不利于程序的稳定开闭原则举例:(重新设计)interfaceSalary{//工资接口publicvoidcomputerSalary();}classBeijingSalaryimplementsSalary{//北京工资实现类publicvoidcomputerSalary(){System.out.println("采用工资算法一计算工资");}}classAccountant{//会计类publicvoidComputerSalary(Salarysalary){salary.computerSalary();}}classTestOCP{//测试类publicstaticvoidmain(String[]args){Accountantaccountant=newAccountant();accountant.ComputerSalary(newBeijingSalary());}}创建工资接口,并提供实现类创建工资接口,并提供实现类开闭原则举例:(很好的适应需求变化)inte...