前些日子我遇到一个设计问题,解决问题之后,我发现以前也经常会遇到类似的问题,思考了一下, 总结出一点经验同大家分享。
设有两个类ClassA和ClassB。ClassA内有一个成员output是类FileOutputStream的一个引用。现在ClassB需要用到ClassA中的output实例向流中放入一个字符串“ABC”应该如何实现呢?
一共有四种方法实现上述的问题。
1.让类ClassA调用ClassB的某个方法将OutputStream实例传递给类ClassB。这样ClassB即可把“ABC” 放入到流中了。
2.让类ClassB调用ClassA的某个方法,来获得OutputStream实例。获得OutputStream实例后,ClassB即可将“ABC”放入到流中了。
3.让类ClassB调用ClassA的某个方法,将字符串“ABC” 传给ClassA对象,由ClassA对象将“ABC”放入到OutputStream中。
4.让类ClassA调用ClassB的某个方法,取得字符串“ABC”,然后由ClassA对象,将其放入到流中。
我觉得这四种类的交互形式,贯穿面象对象设计的始终。这四种方法都有各自的优缺点。但每种都有自已应用的场合。