Java设计模式---简单工厂
来源:互联网 发布:java jar 运行war包 编辑:程序博客网 时间:2024/05/26 02:55
转载自 :
原文作者: 泛型
原文地址: http://my.eoe.cn/flyhigher/archive/18225.html
先看一段书中的代码,类似的代码相信很多人、包括我都写过。因为作为初学者,对于接口的使用一般都会这样写。
1 2 3 4 5 6 7 8 91011121314151617181920212223
/***一个接口、简单定义一个方法test(String str),输出给定 的字符串*/public interface Api { public void test(String str);}/***实现类,对接口Api的实现*/public class Impl implements Api { public void test(String str) {//实现方法test System.out.println("Now In Impl. The input str == " + str); }}//客户端public class Client { public static void main(String[] args) { Api api = new Impl(); api.test("........"); }}
针对接口的调用,基本上所有人都这样写过: Api api = new Impl();,这样写完全没有语法错误,但是却背离的接口调用的出发点和思想。因为Impl作为具体的实现类,暴露给了客户端,客户端知道了功能的具体实现者是实现类Impl,这就破坏了“封装隔离”。
出于调用的需要,允许客户端知道接口,但不允许其知道接口的具体实现类,如何做到,可以给要调用的接口加层“外套”,外套内是要隐藏的细节,外套外是客户端,两者通过外套隔离。
1
打个比方:将一间只有一扇门,没有窗户的房子作为一个工厂车间,它与外界的唯一通道就那扇门。外界不知道车间如何生产产品,但可以通过那扇门取得产品并使用。回到设计模式中,“门”就是我们说的接口,“产品”就是接口定义而由实现类实现的方法,“房子”也就是车间,就是将外部调用与内部实现隔离开的隔离体。这就是简单工厂的思想。
定义: 提供一个创建对象实例功能但不需关心具体实现的类,返回创建类的接口,客户端通过该类得到返回的接口,进而可以调用接口的方法。(这个解释不够抽象,感觉是代码级别的,理解有待加深)
下面是简单工厂模式的示例代码:
1 2 3 4 5 6 7 8 91011121314151617181920212223242526
//接口的定义 public interface Api { public void operation(String s);}//接口的实现public class Impl inplements Api { public void operation(String s) { System.out.println("s == " + s); }}//工厂类 创建Api对象,包装创建细节,返回Api对象public class Factory { public static Api createApi() { Api api = null; api = new Impl();//与前一段代码相同 return api;//返回创建的Api对象 }}//客户端public class Client { public static void main(String args[]) { Api api = Factory.createApi();//通过工厂类获得Api对象,但并不知道接口Api的具体实现是由Impl类完成的//隐藏了实现的细节 api.operation("简单工厂"); }}
在工厂类Factory中,通过实现类Impl实现Api接口,并返回得到的Api对象,对于客户端,想要使用operation()方法,只需要通过Factory类得到一个Api对象即可,对于接口Api的具体实现,是完全被隐藏的,这就将客户客户端的调用与接口的具体实现隔离开。达到封装隔离的目的。
上面的示例是只有一个实现类的简单示例,目的只是阐述简单工厂模式的思想,并未涉及简单工厂中其他知识。
- java 简单工厂设计模式
- JAVA设计模式--简单工厂
- Java简单工厂设计模式
- Java设计模式---简单工厂
- Java设计模式---简单工厂
- java简单工厂设计模式
- java设计模式--简单工厂
- java设计模式----简单工厂
- java简单工厂设计模式
- java--简单工厂设计模式
- java简单工厂设计模式
- java简单工厂设计模式
- Java设计模式--工厂模式(简单工厂+工厂方法)
- Java设计模式-工厂模式(简单工厂+工厂方法)
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- JAVA设计模式 — 简单工厂模式
- LDD3源码学习日记<一>
- 人可以被毁灭,但不可以被打败
- 模拟鼠标键盘事件的工具简介--xdotool
- 将XP风格文件manifest合并到资源文件
- tar.xz解压
- Java设计模式---简单工厂
- opencv笔记7----Mat访问每个像素
- Oracle EBS数据定义移植工具:Xdf(XML Object Description File)
- 精通Android4学习笔记-intent
- IBATIS一些参数说明
- 报错:The type javax.servlet.http.HttpServletRequest cannot be resolved
- 创建自定义toolbar - 快速打开database
- java面试题
- 动态代理