看JAVA 与模式,笔记(一)

      看这本书第5遍了,感觉还是没入门,这次记点笔记,希望能加深印象
在进行可用软件设计的时候,最最关键的一点就是要遵循“ 开-闭”原则。
开闭原则的大体可以描述为: 一个软件实体应当对扩展开放,对修改关闭。
设计一个模块时,应当使这个模块可以在不被修改的前提下被扩展。这句话其实是矛盾的。因为扩展也应该算是一种修改。我感觉应该这样说: 设计一个模块时,应当使这个模块可以在不修改原来代码的的前提下被扩展。当然,这只是一个理想的情况。
JAVA 与模式这本书举的是一个玉皇大帝招安孙悟空的例子。
孙悟空当年打闹天宫,就是对天庭这个现有实体的一种挑战(修改),而玉皇大帝采取的解决办法是招安:既然我现在手下有这样许多官职,不妨再多建一个,加一个看马的人又能如何?(增加,即为扩展)。当然,这只是一个例子而已,也并不是很合适的。假如孙悟空的邪劲上来了,我就非要当个皇帝老儿又该怎么办?如果成功,那么天庭这个机构就要出现大的变动了(孙悟空当皇帝恐怕做法不会和原来的皇帝一样吧?)
招安之法的关键在于不允许改变现有的天庭秩序,但允许将孙悟空纳入现有的秩序中去,从而扩展了当前的秩序。用面向对象的语言来说就是:不允许修改系统的抽象层,而允许扩展系统的实现层
学过JAVA 的人看到这应该能想到:这不就是“继承”嘛!是啊,继承就是实现开闭原则的关键方法之一。
 
从另一个方面看“开-闭”原则
 从另一个方面来看“开-闭”原则,就是“对可变性的封装原则”:找到一个系统中的可变部分,将之封装起来。考虑你的设计中什么可能发生变化,允许其发生变化而不会导致你的系统需要被重新设计。
 
抽象是“开-闭”原则的关键,我们在设计的时候,需要给系统定义一个一劳永逸,不在改变的 抽象设计。一个系统具有的功能需要在抽象层进行定义,在实现层进行实现。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值