设计模式初探(2)开闭原则

作者: wuww | 来源:发表于2016-06-10 19:30 被阅读332次

开闭原则

软件实体(类、模块、函数等等)应该是可以扩展的,但是不可以修改。

开闭原则为我们描绘出了一个美好的代码世界。在这里,我们无需去修改原有的代码。只需要不断的新增模块就能完成功能的增加和修改。(想想还有些小激动呢!!)

那么该如何去做呢?

开闭原则的做法与搭积木相似。将功能划分成若干个不会再分割的小模块,通过对这些小模块的排列组合,我们就可以拼装出无限的可能。

所以,首先要去做的就是对功能进行划分。具体做法可以参见我的上一篇文章设计模式初探(1)

然后就是如何让这些模块可以自由组合拼装。

举一个生活中的例子。我们都在使用各种不同的电器。在切换电器的时候,只需做一个简单的插拔操作,不需要自己去更改电路。对于整个供电系统,根据变化的原因可以划分成2个部分:电源相关部分、用电器相关部分。
它们之间的拼接是通过定义一个接口,插座。电源和用电器各自实现自己的接口,这样任何一处电源和任何一个用电器都可以无缝对接。

回到程序上来~

电路

class Circuit {
    contructor (_power, _applicant) {
        _applicant.use(_power.generate());
    }
}

电源

class Power {
    //发电
    generate () {
    
    }
}

用电器

class Applicant {

    //用电
    use () {
    
    }
}

用电器连接电路

    var _power = new XxxPower();//XxxPower为Power的某个子类,实现generate方法

    var _applicant = new XxxApplicant();//XxxApplicant为Applicant某个子类,实现use方法。

    var _circuit = new Circuit(_power, _applicant);//一个电路就这样连好了

对于上一篇文章设计模式初探(1)中提到的例子,我在这里尝试着拼装一下。

    class Card {
        contructor (_position, _data) {
            //生成列表
            this._renderList(_data.getList());
            //设置按钮
            this._setBtnText(_data.getBtnText());
            //定位模块
            this._setCardPosition(_position.getCardPosition());
            //定位三角
            this._setTrianglePosition(_position.getTrianglePosition());
        }
    }

    class Data {
        //获取列表数据
        getList () {

        }
        //获取按钮文案
        getBtnText () {

        }
    }

    class Position {
        //卡片的位置
        getCardPosition () {

        }

        //三角的位置
        getTrianglePosition () {

        }
    }

    //历史记录数据
    var _data = new HistoryData();

    //居左的位置
    var _position = new LeftPosition();

    //一直新的卡片对象
    var _card = new Card(_position, _data);

大概就是这个意思啦,以上。

相关文章

  • 设计模式初探(2)开闭原则

    开闭原则 软件实体(类、模块、函数等等)应该是可以扩展的,但是不可以修改。 开闭原则为我们描绘出了一个美好的代码世...

  • 设计模式分类以及设计模式原则

    设计模式原则 设计模式原则 开闭原则(Open Closed Principle,OCP) 里氏代换原则(Lisk...

  • 设计模式初探(3)里氏替换原则

    依据开闭原则编写程序,我们根据变化原因的不同将程序分割成了不同的模块,然后拼装在一起。详情请见设计模式初探(2)开...

  • 开闭原则

    个人博客原文:开闭原则 设计模式六大原则之六:开闭原则。 简介 姓名 :开闭原则 英文名 :Open Closed...

  • Java23种设计模式

    GOF23(group of four) 一、设计模式知识 面向对象设计原则 1.开闭原则2.里氏替换原则3.依赖...

  • Spring中与设计模式相关的部分(持续更新)

    设计模式的六(七)大原则1、开闭原则(Open Close Principle)2、里氏代换原则(Liskov S...

  • 1 设计模式的简介

    1 设计模式的七大原则 1.1 开闭原则 A: 定义: 开闭原则(Open Closed Principle,OC...

  • 设计模式的六大原则

    设计模式总的原则就是:开闭原则(Open Close Principle), 开闭原则就是说对扩展开放,对修改关闭...

  • iOS开闭原则和替换原则

    什么叫开闭原则? 六大模式设计原则之一的开闭原则是比较重要的,开闭原则其实就是“抽象构建框架,实现扩展细节...

  • 面向对象中23种设计模式介绍

    什么是设计模式? 设计模式分为哪几种? 什么是设计模式? 设计模式的六大原则 1、开闭原则(Open Close ...

网友评论

    本文标题:设计模式初探(2)开闭原则

    本文链接:https://www.haomeiwen.com/subject/klpsdttx.html