欢迎来到天天文库
浏览记录
ID:23412121
大小:5.55 MB
页数:55页
时间:2018-11-07
《[计算机软件及应用]设计模式的例子》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、开闭原则开闭原则中“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的;开闭原则中“闭”,是指对于原有代码的修改是封闭的,即不应该修改原有的代码。importjava.lang.*;interfaceFruit{publicvoidplant();publicvoidblossom();publicvoidoutcome();}classAppleimplementsFruit{Apple(){this.plant();}publicvoidplant(){System.out.println
2、("Plantaapple");};publicvoidblossom(){System.out.println("Appleblossomed");};publicvoidoutcome(){System.out.println("Appleoutcomed");};}classPearimplementsFruit{Pear(){this.plant();}publicvoidplant(){System.out.println("Pearaapple");};publicvoidblossom(){
3、System.out.println("Pearblossomed");};publicvoidoutcome(){System.out.println("Pearoutcomed");};}interfacegardenerBase//Garden,是不能改变的.以后增加一个水果只需要再写个类继承它!{publicFruitgetFruit();}classAppleGardenerimplementsgardenerBase//种植Apple的Garden{privatestaticAppleGard
4、enersingleton;privateAppleGardener(){;}publicstaticAppleGardenergetGardener(){if(singleton==null)singleton=newAppleGardener();returnsingleton;}publicFruitgetFruit(){returnnewApple();}}classPearGardenerimplementsgardenerBase//种植Pear的Garden{privatestaticPea
5、rGardenersingleton;privatePearGardener(){;}publicstaticPearGardenergetGardener(){if(singleton==null)singleton=newPearGardener();returnsingleton;}publicFruitgetFruit(){returnnewPear();}}publicclassMyFirstOCPJAVA{publicstaticvoidmain(String[]a){FruittempApp
6、le;gardenerBaseappleGarden=AppleGardener.getGardener();tempApple=appleGarden.getFruit();FruittempPear;gardenerBasepearGarden=PearGardener.getGardener();tempPear=pearGarden.getFruit();}}里氏代换原则一个软件实体如果使用的是一个基类的话,那么一定适用于其子类。而且它觉察不出基类对象和子类对象的区别。也就是说,在软件里面,把基类
7、都替换成它的子类,程序的行为没有变化。反过来的代换不成立,如果一个软件实体使用的是一个子类的话,那么它不一定适用于基类。里氏代换原则的四层含义1)子类必须完全实现父类的方法。在类中调用其他类是务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则。2)子类可以有自己的个性。子类当然可以有自己的行为和外观了,也就是方法和属性3)覆盖或实现父类的方法时输入参数可以被放大。即子类可以重载父类的方法,但输入参数应比父类方法中的大,这样在子类代替父类的时候,调用的仍然是父类的方法。即以子类
8、中方法的前置条件必须与超类中被覆盖的方法的前置条件相同或者更宽松。4)覆盖或实现父类的方法时输出结果可以被缩小。4、里氏代换原则在设计模式中的体现策略模式(Strategy)如果有一组算法,那么就将算法封装起来,使得它们可以互换。客户端依赖于基类类型,而变量的真实类型则是具体策略类。这是具体策略焦色可以“即插即用”的关键。合成模式(Composite)合成模式通过使用树结构描述整体与部分的关系,从而可以将单纯元素与符合元素同等
此文档下载收益归作者所有