zoukankan      html  css  js  c++  java
  • 【设计模式】四:开放-封闭原则

    开发封闭原则
    定义:软件实体(类,模块,函数等等)应该可以扩展,但是不可以修改
    特征:1:对于扩展是开发的,2:对于更改是封闭的
    目标:当面对新的需求的时候,可以不用修改或者大幅改动之前封装好的内容,只需要进行扩展就可以满足新的需求
    实现方式:在最初接到需求的时候,就应该仔细思考,考虑到需求会发生哪些变化,想的越多,越全,这样在面对需求更改的时候,
    可以使用最少的成本,最高效的完成。这就是一直说的百分之70的时间用来思考,百分之30的时间用来实现
    实际情况:无论模块多么封闭,在面对需求变化的时候,都无法做到完全封闭,都可能会有一些细微的改动,因此就需要在设计模块的时候,
    做出选择,提前思考到有哪些变化种类,然后抽离出这些变化;例如之前实现的加减乘除,最开始直接到减的需求,然后产品又增加了
    加的需求,此时我们就应该想到会有不同的计算规则,因此就需要对计算规则抽象出一个基类,然后每个具体的计算规则都继承自这个基类
    这样新增新的计算规则时,只需要继承实现就可以了。
    思考方向:
    在实际的业务开发中,一开始我们可能会想不到那么多,我们也无法猜测产品的走向,可以做一些简单的封装等操作即可,但是后来产品提出
    了同类需求的时候,我们就需要将他们之中的相同抽离,封装,继承,这样在以后实现同类需求时就是在增加新的代码,而不是在更改旧的代码
    注意:查明可能需要变化所等待的时间越长,到时候封装,抽离越困难
    重要性:开闭原则是面向对象的核心,遵循这个原则的话会体会到面向对象的可维护,可扩展,可复用,灵活性好的好处;但要注意拒绝不成熟的抽象
  • 相关阅读:
    abp vnext v2.9.0 Blogging模块安装遇到的问题及解决方法
    TestCafe前端E2E自动化测试技术要点(转)
    UI自动化测试框架 ---TestCafe(转)
    一条龙(1)
    Nginx常用命令
    如何下载各大视频网站的视频,从html5中video标签截取blob视频流(纯使用Downie下载工具非代码操作)
    beego连接Mysql,生成WebAPI+CRUD和Swagger
    Go每日一题(7)
    Go每日一题(6)
    Go每日一题(5)
  • 原文地址:https://www.cnblogs.com/rcltocode/p/10567104.html
Copyright © 2011-2022 走看看