【软件架构】【设计原则】开闭原则
【摘要】 一、什么是开闭原则
Open-Close Principle,简称OCP,指的是一个软件实体(包括一个模块、类和方法)都应该对修改关闭、对拓展开放,也就是对修改和拓展这两个行为的原则;
一、什么是开闭原则
Open-Close Principle,简称OCP,指的是一个软件实体(包括一个模块、类和方法)都应该对修改关闭、对拓展开放,也就是对修改和拓展这两个行为的原则;
在面向对象中,强调的是用抽象构建框架(关闭修改),用实现拓展新功能(开放拓展);
在Java中具体点就是,使用抽象类或接口定义整体系统框架,然后使用子类或具体类去重写抽象类或实现接口相关方法,达到不用修改原来代码就可以拓展新的功能。
二、开闭原则的优点
-
提高软件实体的可复用性
使用抽象构建的框架,那么抽象出来的东西具有很大的共同特性,可以直接拿来复用,避免重复定义或编码。
-
提高软件实体的可拓展性
现有的功能特性不满足未来的需求变化,可基于抽象框架进行拓展新的功能,不修改原来的代码即可完成拓展性。
-
提供软件实体的可维护性
所有的功能特性都是基于抽象框架拓展而成,各个功能特性独立且相互不影响,后期维护目标明确且方便。
三、开闭原则的缺点
面向对象的抽象难度大,如果在刚开始使用抽象构建的框架考虑不全,后期已经拓展了很多功能特性,一旦抽象的基础框架发生变动,下面的拓展部分都有可能受到影响;因此需要很强、很系统的抽象能力把基础框架抽象出来,才能减少后期带来的不必要影响。
四、开闭原则的具体实现
-
需求
识别各种不同的人群信息,并输出。
-
代码实现
person类:基本属性
person接口:抽象对外暴露的方法,只能调用这些方法(对修改关闭)
person抽象类:抽象person的基本特征,可以直接复用
person具体类:主要是基于person抽象类的拓展功能
第一个拓展person:
第二个拓展person:
人脸识别类:调用person接口的相关方法
测试类test:测试类
输出:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)