1700456394
}
1700456395
1700456396
//模拟书店买书
1700456397
1700456398
public static void main(String[]args){
1700456399
1700456400
NumberFormat formatter=NumberFormat.getCurrencyInstance();
1700456401
1700456402
formatter.setMaximumFractionDigits(2);
1700456403
1700456404
System.out.println(”–––—书店卖出去的书籍记录如下:–––—”);
1700456405
1700456406
for(IBook book:bookList){
1700456407
1700456408
System.out.println(“书籍名称:”+book.getName()+”\t书籍作者:
1700456409
1700456410
“+book.getAuthor()+”\t书籍价格:”+formatter.format
1700456411
1700456412
(book.getPrice()/100.0)+“元”);
1700456413
1700456414
}
1700456415
1700456416
}
1700456417
1700456418
}
1700456419
1700456420
我们只修改了粗体部分,其他的部分没有任何改动,运行结果如下所示。
1700456421
1700456422
––––书店买出去的书籍记录如下:–––––––
1700456423
1700456424
书籍名称:天龙八部 书籍作者:金庸 书籍价格:¥25.60元
1700456425
1700456426
书籍名称:巴黎圣母院 书籍作者:雨果 书籍价格:¥50.40元
1700456427
1700456428
书籍名称:悲惨世界 书籍作者:雨果 书籍价格:¥28.00元
1700456429
1700456430
书籍名称:金瓶梅 书籍作者:兰陵笑笑生 书籍价格:¥38.70元
1700456431
1700456432
OK,打折销售开发完成了。看到这里,各位可能有想法了:增加了一个OffNoveBook类后,你的业务逻辑还是修改了,你修改了static静态模块区域。这部分确实修改了,该部分属于高层次的模块,是由持久层产生的,在业务规则改变的情况下高层模块必须有部分改变以适应新业务,改变要尽量地少,防止变化风险的扩散。
1700456433
1700456434
注意 开闭原则对扩展开放,对修改关闭,并不意味着不做任何修改,低层模块的变更,必然要有高层模块进行耦合,否则就是一个孤立无意义的代码片段。
1700456435
1700456436
我们可以把变化归纳为以下三种类型:
1700456437
1700456438
❑逻辑变化
1700456439
1700456440
只变化一个逻辑,而不涉及其他模块,比如原有的一个算法是a*b+c,现在需要修改为a*b*c,可以通过修改原有类中的方法的方式来完成,前提条件是所有依赖或关联类都按照相同的逻辑处理。
1700456441
1700456442
❑子模块变化
1700456443
[
上一页 ]
[ :1.700456394e+09 ]
[
下一页 ]