一、java工厂模式
1、一般情况下,我们如果调用接口,就会知道它的实现方法,比如:
UserDao ud=new UserDaoImpl();这样就跟我们设计接口相背离,接口的思想就是“封装隔离”,通常提到的封装是对数据的封装,但是这里的封装是指“对被隔离体的行为的封装”,或者是“对被隔离体的职责的封装”;而隔离指的是外部调用和内部实现,外部调用只能通过接口进行调用,而外部调用是不知道内部具体实现的,也就是说外部调用和内部实现是被接口隔离开的。

在java程序设计里面,非常讲究层的划分和模块的划分。通常按照三层来划分java程序,分别是表现层、逻辑层、数据层,它们之间都是用接口来通讯的。

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

图2 一个层内部的各个模块交互示意图
所谓组件,从设计上讲,组件就是能完成一定功能的封装体,小到一个类,大到一个系统,都可以称为组件,因为一个小系统放到更大的系统里面去,也就是当个组件而已。
2、问题:在java编程中,出现只知道接口而不知道实现,该怎么办?就像上述的例子,在client中,它知道要使用UserDao接口,但是不知道由谁实现,也不知道如何实现,从而得不到接口对象,就无法使用该接口,该怎么办?这个问题的一个合理解决方案就是简单工厂。
3、简单工厂:
3.1、什么是简单工厂:提供一个创建对象实例的功能,而无须关心起具体实现。被创建实例的类型可以使接口、抽象类,也可以是具体的类。
3.2、分析上面的问题,虽然不能让模块外部知道模块内的具体实现,但是模块内部是可以知道实现类的,而且创建接口是需要具体实现类的。
那么在模块内部新创建一个类,在这个类里面来创建接口,然后把创建好的接口返回给客户端,这样外部应用就只需要根据这个类来获取相应的接口对象,然后就可以操作接口定义的方法了。把这样的对象称为简单工厂,就叫做Factory吧。
这样一来,客户端就可以通过这个Factory来获取需要的接口对象,然后调用接口的方法来实现需要的功能,而且客户端也不用在关心具体实现了。
3.3、简单工厂结构和说明

图3 简单工厂的结构
这个,用了Factory,就不需要在UserDao ud=new UserDaoImpl(),不需要new了,这个直接调用Factory.createXXX就行了。
本文深入探讨Java工厂模式,解释其在解决接口与具体实现分离问题上的应用,通过简单工厂概念,阐述如何在Java编程中通过工厂类创建接口实例,简化客户端代码,提高代码的灵活性和可维护性。
948

被折叠的 条评论
为什么被折叠?



