打字猴:1.700456544e+09
1700456544
1700456545 设计模式之禅 [:1700453929]
1700456546 设计模式之禅 6.4 如何使用开闭原则
1700456547
1700456548 开闭原则是一个非常虚的原则,前面5个原则是对开闭原则的具体解释,但是开闭原则并不局限于这么多,它“虚”得没有边界,就像“好好学习,天天向上”的口号一样,告诉我们要好好学习,但是学什么,怎么学并没有告诉我们,需要去体会和掌握,开闭原则也是一个口号,那我们怎么把这个口号应用到实际工作中呢?
1700456549
1700456550 1.抽象约束
1700456551
1700456552 抽象是对一组事物的通用描述,没有具体的实现,也就表示它可以有非常多的可能性,可以跟随需求的变化而变化。因此,通过接口或抽象类可以约束一组可能变化的行为,并且能够实现对扩展开放,其包含三层含义:第一,通过接口或抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的public方法;第二,参数类型、引用对象尽量使用接口或者抽象类,而不是实现类;第三,抽象层尽量保持稳定,一旦确定即不允许修改。还是以书店为例,目前只是销售小说类书籍,单一经营毕竟是有风险的,于是书店新增加了计算机书籍,它不仅包含书籍名称、作者、价格等信息,还有一个独特的属性:面向的是什么领域,也就是它的范围,比如是和编程语言相关的,还是和数据库相关的,等等,修改后的类图如图6-3所示。
1700456553
1700456554
1700456555
1700456556
1700456557 图6-3 增加业务品种后的书店售书类图
1700456558
1700456559 增加了一个接口IComputerBook和实现类Computer-Book,而BookStore不用做任何修改就可以完成书店销售计算机书籍的业务。计算机书籍接口如代码6-8所示。
1700456560
1700456561 代码清单6-8 计算机书籍接口
1700456562
1700456563 public interface IComputerBook extends IBook{
1700456564
1700456565 //计算机书籍是有一个范围
1700456566
1700456567 public String getScope();
1700456568
1700456569 }
1700456570
1700456571 很简单,计算机书籍增加了一个方法,就是获得该书籍的范围,同时继承IBook接口,毕竟计算机书籍也是书籍,其实现如代码清单6-9所示。
1700456572
1700456573 代码清单6-9 计算机书籍类
1700456574
1700456575 public class ComputerBook implements IComputerBook{
1700456576
1700456577 private String name;
1700456578
1700456579 private String scope;
1700456580
1700456581 private String author;
1700456582
1700456583 private int price;
1700456584
1700456585 public ComputerBook(String_name,int_price,String_author,String_scope){
1700456586
1700456587 this.name=_name;
1700456588
1700456589 this.price=_price;
1700456590
1700456591 this.author=_author;
1700456592
1700456593 this.scope=_scope;
[ 上一页 ]  [ :1.700456544e+09 ]  [ 下一页 ]