一个模块在扩展性方面应当是开放的而在更改性方面应当是封闭的。因此在进展面对对象设计时要尽量考虑接口封装机制、抽象机制和多态技术。该原则同样适合于非面对对象设计的方法,是软件工程设计方法的重要原则之一。我们以收音机的例子为例,叙述面对对象的开闭原则。我们收听节目时需要翻开收音机电源,对准电台频率和进展音量调整。但是对于不同的收音机,实现这三个步骤的细节往往有所不同。比方自动收缩电台的收音机和按钮式收缩在操作细节上并不一样。因此,我们不太可能针对每种不同类型的收音机通过一个收音机类来实现(通过重载)这些不同的操作方式。但是我们可以定义一个收音机接口,供应开机、关机、增加频率、降低频率、增加音量、降低音量六个抽象方法。不同的收音机继承并实现这六个抽象方法。这样新增收音机类型不会影响其它原有的收音机类型,收音机类型扩展极为便利。此外,已存在的收音机类型在修改其操作方法时也不会影响到其它类型的收音机。
2. 替换原则 (the Liskov Substitution Principle LSP)
子类应当可以替换父类并消失在父类能够消失的任何地方。这个原则是Liskov于1987年提出的 ...


雷达卡


京公网安备 11010802022788号







