首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

工厂模式《1》

2013-12-05 
工厂模式《一》?图1? 基本的三层结构示意图在一个层内部的各个模块交互也要通过接口,如图2所示:图2? 一个层

工厂模式《一》

?图1? 基本的三层结构示意图

在一个层内部的各个模块交互也要通过接口,如图2所示:


工厂模式《1》

图2? 一个层内部的各个模块交互示意图

??????? 各个部分的接口具体应该如何去定义,具体的内容是什么,不去深究,那是需要具体问题具体分析的,这里只是来学习设计的方法。
??????? 上面频频提到“组件”,那么什么是组件呢?先简单的名词解释一下:
??????? 所谓组件:从设计上讲,组件就是能完成一定功能的封装体。小到一个类,大到一个系统,都可以称为组件,因为一个小系统放到更大的系统里面去,也就当个组件而已。事实上,从设计的角度看,系统、子系统、模块、组件等说的其实是同一回事情,都是完成一定功能的封装体,只不过功能多少不同而已。
??????? 继续刚才的思路,大家会发现,不管是一层还是一个模块或者一个组件,都是一个被接口隔离的整体,那么下面我们就不去区分它们,统一认为都是接口隔离体即可,如图3所示:


工厂模式《1》
图3? 接口隔离体示意图

既然在Java中需要面向接口编程,那么在程序中到底如何使用接口,来做到真正的面向接口编程呢?

1.3? 不用模式的解决方案

??????? 回忆一下,以前是如何使用接口的呢,假设有一个接口叫Api,然后有一个实现类Impl实现了它,在客户端怎么用这个接口呢?
??????? 通常都是在客户端创建一个Impl的实例,把它赋值给一个Api接口类型的变量,然后客户端就可以通过这个变量来操作接口的功能了,此时具体的结构图如图4:

?


工厂模式《1》
?图4? 基本的接口和实现

还是用代码来说明,会更清楚一些。

(1)先定义接口Api,示例代码如下:

new?Impl();??

??????? 然后再想想接口的功能和思想,发现什么了?仔细再想想?

?

??????? 你会发现在客户端调用的时候,客户端不但知道了接口,同时还知道了具体的实现就是Impl。而接口的思想是“封装隔离”,而Impl这个实现类,应该是被接口Api封装并同客户端隔离开的,也就是说,客户端根本就不应该知道具体的实现类是Impl。
??????? 有朋友说,那好,我就把Impl从客户端拿掉,让Api真正的对实现进行“封装隔离”,然后我们还是面向接口来编程。可是,新的问题出现了,当他把“new Impl()”去掉过后,发现他无法得到Api接口对象了,怎么办呢?
??????? 把这个问题描述一下:在Java编程中,出现只知接口而不知实现,该怎么办?
??????? 就像现在的Client,它知道要使用Api接口,但是不知由谁实现,也不知道如何实现,从而得不到接口对象,就无法使用接口,该怎么办呢?

?

转载私塾在线:http://sishuok.com/forum/blogPost/list/115.html

热点排行