您的位置:首页 > 其它

简单工厂(Factory)-提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。

2010-11-25 15:40 1271 查看
工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

(1)Api定义的示例代码如下:

/**
* 接口的定义,该接口可以通过简单工厂来创建
*/
public interface Api {
/**
* 示意,具体功能方法的定义
* @param s 示意,需要的参数
*/
public void operation(String s);
}
(2)定义了接口,接下来实现它。ImplA的示例代码如下:

/**
* 接口的具体实现对象A
*/
public class ImplA implements Api{
public void operation(String s) {
//实现功能的代码,示意一下
System.out.println("ImplA s=="+s);
}
}
ImplB的示意实现和ImplA基本一样。示例代码如下:

/**
* 接口的具体实现对象B
*/
public class ImplB implements Api{
public void operation(String s) {
//实现功能的代码,示意一下
System.out.println("ImplB s=="+s);
}
}
(3)下面来看看简单工厂的实现。示例代码如下:

/**
* 工厂类,用来创建Api对象
*/
public class Factory {
/**
* 具体创建Api对象的方法
* @param condition 示意,从外部传入的选择条件
* @return 创建好的Api对象
*/
public static Api createApi(int condition){
//应该根据某些条件去选择究竟创建哪一个具体的实现对象,
//这些条件可以从外部传入,也可以从其他途径来获取。
//如果只有一个实现,可以省略条件,因为没有选择的必要。
//示意使用条件
Api api = null;
if(condition == 1){
api = new ImplA();
}else if(condition == 2){
api = new ImplB();
}
return api;
}
}
(4)再来看看客户端的示意,示例代码如下:

/**
* 客户端,使用Api接口
*/
public class Client {
public static void main(String[] args) {
//通过简单工厂来获取接口对象
Api api = Factory.createApi(1);
api.operation("正在使用简单工厂");
}
}
示例代码转自:http://student.csdn.net/space.php?uid=1294199&do=blog&id=48256
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐