工厂模式--我的理解

来源:互联网 发布:心知早早孕试纸准确吗 编辑:程序博客网 时间:2024/05/01 01:24

<百度百科>
工厂模式定义:实例化对象,用工厂方法代替new操作。
工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。

      比喻:

         你想吃馒头了,这时你只要打个电话给做馒头的工厂,这个馒头相当于一个接口,工厂就会根据做馒头的秘方(properties文件)给你做好馒头,然后送给你(实现接口)


1 。馒头工厂类:

import java.io.IOException;
import java.util.Properties;
/**
* 业务工厂
* 利用工厂模式来隔离业务和界面
* 利用配置来调用实现类
* 界面上面跑的都是接口
* @author lee
*
*/
public class MantouFactory {
public static Properties properties;
static
{//不用生成类的实例就能直接调用
properties = new Properties();
//加载配置文件
try {
properties.load(MantouFactory.class.getClassLoader().getResourceAsStream("mantou.properties"));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取实例
* @param clazz
* @return
*/
@SuppressWarnings("unchecked")
public static<T> T get(Class<T> clazz)//传入馒头接口
{
//泛型编程,T可以传各种类,实现灵活访问
String simpleName = clazz.getSimpleName();
String className = properties.getProperty(simpleName);
//clazz.getName()//全名
try {
return (T) Class.forName(className).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}


2 `馒头的配方(键值对)

Mantou=com.lee.test.mantou.implement.mantouImpl

(馒头接口的实现类名)


3 `定义馒头接口

public interface ManTou(){

  public abstract  void MantouImplementMethod();

}


4  具体实现馒头 接口的馒头实现类

public class MantouImplement implements Mantou(){

   public void MantouImplementMethod(){

         //拿到馒头了,吃馒头

     }

}


5  具体调用哪吃馒头的方法:

    A  没用工厂模式之前:

           MantouImplement  吃馒头 = new MantouImplement();

    B  调用工厂模式之后:

        ManTou 吃馒头 = MantouFactory.get(ManTou.class);


比较俩者的优缺点:

                 A 可扩展性比较差,当需要吃别的馒头时,需要重新new 一个生产馒头的方法

                B 工厂模式的话,就只需要去配方里面修改一下配方,随你吃肉包还是菜包等............


 


0 0
原创粉丝点击