[计算机软件及应用]设计模式的例子

[计算机软件及应用]设计模式的例子

ID:23412121

大小:5.55 MB

页数:55页

时间:2018-11-07

[计算机软件及应用]设计模式的例子_第1页
[计算机软件及应用]设计模式的例子_第2页
[计算机软件及应用]设计模式的例子_第3页
[计算机软件及应用]设计模式的例子_第4页
[计算机软件及应用]设计模式的例子_第5页
资源描述:

《[计算机软件及应用]设计模式的例子》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

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)合成模式通过使用树结构描述整体与部分的关系,从而可以将单纯元素与符合元素同等

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。