您的位置:首页 > 其它

设计模式-1 简单工厂设计模式

2018-01-11 10:40 253 查看
简单工厂不是一个标准的设计模式,但是他太常用,有简单,所以这是第一个热身运动

接口回顾

Java接口的概念:

java接口是一种特殊的抽象类,跟一般抽象类相比,接口里面的所有方法都是抽象方法,接口里面的所有方法都是抽象,所以属性都是常量.也就是说,接口只有方法定义而没有实现;

用处

定义实现类的外观,约束实现类的行为.接口相当于一份契约,根据外包应用需要的功能,约定实现类应该要实现的功能.

接口的思想

浓缩下来:“封装隔离”:对被隔离体行为的封装,或者对被隔离体职责的封装;而隔离指的是外部调用和内部实现,外部调用只能通过接口进行调用,外包调用是不知道内部具体实现的,也就是说外包调用和内部实现是被接口隔离开的

使用接口的好处

外包调用和内部实现被接口隔离,那么只有接口不变,内部实现的变化就不会影响到外部应用,从而使得系统更灵活,扩展性和可危害性;”接口是系统可插拔性的保证”

接口和抽象的选择

1.优先选择接口 2.既要定义子类的行为又要为子类提供公共的功能时选择抽象类

面向接口编程是Java编程的重要原则

通常,java程序分为:表现层,逻辑层,数据层,他们之间都有通过接口来通讯

每一个层里面,又有许多小模块,每个模块对外则是一个整体,所以一个模块对外应该提供接口,其他地方需要使用到这个模块的功能时,可以通过此接口来进行调用.”接口是被其隔离部分的外观”

那么”组件”是什么东西?

组件就是能完成一个功能的封装体.

Api api = new Imple()


在以上代码的时候,在客户端,既有接口,又有实现类,与思想”封装隔离”不符合?

那么我们如何做得只只接口不知实现呢?

解决方案:简单工厂

简单工厂能帮助我们真正地开始面向接口编程,像以前的做法,其实只是用到接口的多态部分的功能,而最重要的”封装隔离性”并有没体现出来

疑问:把”new Impl()”放到客户端和放到简单工厂里面有什么不同?

简单工厂的位置是位于封装体内的,也就是简单工厂是根接口和具体的实现在一起的,算是封装体内部的一个类,所以简单工厂知道具体的实现类是没有关系额.重新整理一下简单工厂的结构图

简单工厂的写法:

1.传人type:

由于从客户端调用工厂的时候传人参数,就说明客户端必须hide每个参数的含义,也需要理解每个参数对应的功能处理,这就要求必须在一定程度上向客户暴露一定的内部实现细节

2.使用配置文件和反射技术

简单工厂的本质是:选择实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: