C++设计模式之开闭原则笔记

开闭原则是一个软件设计的基本原则,它提倡软件实体应对扩展开放,对修改关闭。通过使用抽象类或接口,可以在不修改原有代码的基础上,通过新增实现类来扩展功能。文章通过一个登录界面的例子,展示了如何从最初对按钮类型修改的需求,转变为使用抽象类和虚函数实现的灵活设计,提高了代码的可扩展性和维护性。
摘要由CSDN通过智能技术生成

目录

一.什么是开闭原则

二.为什么会有开闭原则

三.以及怎么使用开闭原则


一.什么是开闭原则

定义:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。

说白了就是当一个产品做好的时候,如果有新的功能加入我们应该尽量做到去扩展而不是去修改已经设计好的功能或结构,比如笔记本电脑,厂家生产一台笔记本,如果我们想使用鼠标那么我们只需要使用厂家给我们的接口去连接上自己买好的或者做好的usb就行

二.为什么会有开闭原则

客户要求设计一个登录的界面需求

loginFrom是登录界面
而Cirlebutton是界面中的一个圆形按钮
,于是我飞快地设计好了于是我把设计好的类发给项目组长,
组长看了我两分钟手上拳头紧握,几欲动手,最后打回。
而没学过设计模式的我不明所以
下面是我写好的代码

class Cirlebutton {
public:
    void dispaly() {
        ......
    }
};
class loginFrom {
    Cirlebutton btA;
public:
    void displays() {
        ........
    }
};

可以看出,我虽然实现了基本需求但是如果需求有变更,想改一个新的方形buton那我是不是得机械的把loginfrom中的Cirlebutton改为RectangeButton呢?
每次按钮有变化我是不是又得改回去,所以程序可扩展性极差,对其他人也十分不友好,
于是今天学了设计模式的我花了点时间改好了代码,小心的提交了代码,随后傲娇的组长面带喜色。

class AbstractButton {
public:
    virtual    void displays() {

      .........
    };
};
class Cirlebutton : public AbstractButton {
public:
    void displays() {
    ............
    }
};
class loginFrom {
    AbstractButton* btA;
public:
    void setbt(AbstractButton* btAa) {
        this->btA = btAa;
    };
    void displays() {
        this->btA->displays();
    }

};

那么这段代买究竟有何玄机
可以看到这段代码增加了一个抽象父类AbstractButton作为接口,
子类Cirlebutton去实现AbstractButton,同时重写dispalys方法
以及父类增加新的关键字virtual 去修饰dispalys抽象方法

三.以及怎么使用开闭原则

在Java中我们可以定于interface面向接口编程我们只需要implement方法
但是C++中并没有这样的关键字,C++可以通过关键字virtual定义虚函数或者纯虚函数的方式实现接口,然后子类继承这个接口类并且定义虚函数的功能就可以了,
这样我们每次更改业务需求时我们只需要定义一个新的button去继承就行了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TECreate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值