您的位置:首页 > 其它

从设计模式Observer的实现看OOD的设计——浅谈“多态”的设计原则 [ 光影人像 东海陈光剑 的博客 ]

2015-01-28 17:29 295 查看
Subject.java



 

WeatherData.java



 

Observer.java



 

UserA.java



 

UserB.java



 

demo.java

 



运行结果:

 



 在这个简单的Observer设计模式的实现中,我们主要分析demo.java这个文件。在demo类的应用中,我们不难看出,我们在实例化对象weatherData,userA,userB的时候,类型选用的是接口类和抽象类。为什么不用实体类来定义呢?这就是多态的意义所在。其实,如果用实体类来定义这些实例化对象,结果是完全一样的。这个差别从userA和userB的定义可以找到答案。对于demo类的应用者来说,我们只需要关心Observer类的抽象定义就知道如何调用userA和userB的功能,而不用去关心UserA和UserB这两个类的具体实现,也许还有UserC,UserD等等很多种不同形态的类。对于程序设计而言,如果我们要一一关注这些具体类的实现,那么无疑增加了开发者的工作量。还有一点,当UserA、UserB……等子类的实现发生改变的时候,其他部分的代码都可以不用改变。譬如UserA改变inform函数的实现:

    @Override

    public void inform(String msg){

       System.out.println("This is new york city.");

       System.out.println("UserA have got weather message: " + msg);

    }

也许采用Observer这个模式来解释多态的优异特性不是很适合。下次我再用一个更能说明多态的优点的设计来谈一下(不套用设计模式了,呵呵)。在这里专门用到Observer这个模式,算是对设计模式的一个引子,抛砖引玉,希望大家以后能多多的探讨这个方面的问题。

 

 

 

我们从来只做一件事,分享.
让美在这个世界流转
让倍感无趣的 受伤的 彷徨的 孤独的 或是心情忧郁的 人生黯淡的人们
能有一次机会
去再一次发现这个世界的美
并把美传递给他人
---光影人像(Follow WeChat public number with interest)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: