博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第四话-开放封闭原则
阅读量:6708 次
发布时间:2019-06-25

本文共 2025 字,大约阅读时间需要 6 分钟。

说个不恰当的样例吧。小A是一个风度翩翩的美男子,喜得N多美女喜欢。他呢一向非常开放,性格随和。所以和身边的美女同学都非常亲近。说不清是爱情还是友情。这是N多少年的梦想啊,谁不想身边美女如云啊?最终有一天。小A交女朋友了。女友可谓风姿卓越,沉鱼落雁。是不是非常狗血的剧情?不要急,咱们不是为了讲故事。但是小A开放惯了,不懂得封闭。还是和身边的女生们非常随和。

一致,女朋友生气。

后果非常严重。

为什么会这样呢?由于爱情是唯一的是不可侵犯的,是不可分享的,是私有的霸占的。应该是对外封闭的。

小A就是不懂得去把握开放封闭原则。

那么什么是开放封闭原则呢?请看下文。

一、什么是开放封闭原则?
所谓开放封闭原则就是说,软件实体应该是可扩展。而不可改动的。

也就是说,对扩展是开放的,而对改动是封闭的。

当你写好一个程序。你里面的类是相互独立的,而且是对一些毁灭性的更改是封闭的,但他能够被扩展。正如,第一话中的计算器的样例,假设開始你仅仅是写了一个计算加法的程序,当要加入减法的功能时,你不能去改动做加法运算的类,但你能够去扩展他,继承他重写其方法等等方法解决。
所以说你敲代码时要遇见未来,把一个类写成可扩展的,但不能轻易改动的。
都说开放封闭原则是面向对象设计的核心,这话不假。还不明确,怎么办?
突然想到一个笑话,你能够去北大青鸟学一年,再去蓝翔学一年,再去新东方学一年。出来你就能够用电脑控制挖掘机炒菜了。

是不是非常高端大气上档次?

二、应用于什么场合?
1、面向程序设计的方方面面;
2、业务逻辑比較庞大的系统等。

三、上代码(银行业务系统)
事实上咱们之前写的那几个样例已经使用了开放封闭的原则。呵呵,是不是好多你都是曾经用过。仅仅是不知道名字而已。
在银行。假设每一个窗体都进行存取等多项业务,那么业务处理者必须很熟悉各项业务。而且须要高度认真不能给别人办错了业务,他的桌面也将须要N多东西。

可是假设把这些业务分离开,一个窗体时一种业务。那将提高多少效率,工作人员也轻松了,人们也不用等那么久了。

Bank.java
public interface Bank {
    public void work(int money);
}
Deposit.java
public class Deposit implements Bank {
    public void work(int money) {
        // TODO Auto-generated method stub
        System.out.println("您存了"+money+"元整");
    }
}
Widthdraw.java
public class Withdraw implements Bank {
    public void work(int money) {
        // TODO Auto-generated method stub
        System.out.println("您取了" + money + "元整");
    }
}

BankFactory.java

//工厂类,是不是非常熟悉。对。简单工厂模式

public class BankFactory {
    public static Bank createBank(String choice) {
        Bank bank = null;
        if (choice.equals("withdraw")) {
            bank = new Withdraw();
        } else if (choice.equals("deposit")) {
            bank = new Deposit();
        }
        return bank;
    }
}
Main.java
public class Main {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Bank worker1 = BankFactory.createBank("withdraw");
        worker1.work(10000);
        Bank worker2 = BankFactory.createBank("deposit");
        worker2.work(20000);
    }
}
四、小结
原则都是人定的。要活学活用。学习设计模式是为了设计出高质量的代码。让其易维护。易扩展,易重用,灵活清晰等等。

这是共同的追求,假设我们有自己的业务需求有自己的思想。就是感觉这样做是好的,那么恭喜你你感觉错了。

要是你问自己几个问题。我的类能够分成多个类么?我的类需不须要分成多个类?万一Boss让我加入其它功能会不会影响到这些类?当你想清晰了。那么恭喜你。你已经完美使用了设计模式。

开放封闭模式这个界限太模糊了,要是太封闭了。那就仅仅有女朋友,也不好。人活一世,广交朋友。

所谓,海内存知己,天涯若比邻。

转载地址:http://fyilo.baihongyu.com/

你可能感兴趣的文章
重新定义云数据库 阿里云POLARDB 9月21日发布
查看>>
物联网安全威胁剧增 如何拓展移动化能力
查看>>
工业物联网:创造价值 转换业务模式
查看>>
思科若要加入超融合大战:需启用你的现金
查看>>
程序员如何既不耽误工作又有时间干业余项目?
查看>>
王胤:我是怎么把体温计变成助孕计的
查看>>
Linux下如何定制SSH来简化远程访问
查看>>
空与非空 EMPTY_LOB和NULL的区别
查看>>
未来的主角是公有云还是私有云?哪些云安全企业能在行业洗牌中脱颖而出
查看>>
可能吞噬硬件的无服务器云
查看>>
如何自行搭建一个威胁感知大脑 SIEM?| 硬创公开课
查看>>
安全圈老司机为什么会在这个游戏里翻车?(内附详细解谜攻略)
查看>>
大数据将带来哪些“健康红利”?
查看>>
技术派的梦想旅行,用大数据推动旅游2.0时代到来
查看>>
高校 WiFi 9 大谬论
查看>>
CyrusOne计划在美国德克萨斯建设大型数据中心园区
查看>>
暴风热点 要的不仅仅是免费WIFI
查看>>
MSR路由器的未来之路
查看>>
《C语言程序设计:问题与求解方法》——3.10节提高部分
查看>>
《数据库基础及实践技术——SQL Server 2008》一3.3 查看和设置数据库选项
查看>>