简单工厂模式

来源:互联网 发布:平均利润率下降知乎 编辑:程序博客网 时间:2024/06/09 18:27


简单工厂的本质是:选择实现


何时选用简单工厂:

1.完全封装——想要完全封装隔离具体实现,让外部只能通过接口来操作封装体,用户通过获取接口实现功能而不需要知道具体的实现。


2.集中管理——一个简单工厂可以创建很多不相关的对象,可以把创建它们的职责集中到一个工厂中来管理、控制。


代码目录:


Api.java:

package a;public interface Api {   public void test1(String s);}

Client.java:

package a;public class Client {   public static void main(String[] args){   Api api=Factory.createApi();   api.test1("ggggg");   }}

Impl.java:

package a;public class Impl implements Api{public void test1(String s){System.out.println("impl1 is "+s);}}


Factory.java:()

package a;import java.io.IOException;import java.io.InputStream;import java.util.Properties;//工厂类,用来创建Api对象public class Factory {   public static Api createApi(){   //直接读取配置文件来获取需要创建实例的类   Properties p=new Properties();   InputStream in =null;   try{   in=Factory.class.getResourceAsStream("FactoryTest.properties");   p.load(in);   }catch (IOException e){   System.out.println("error");   e.printStackTrace();   }finally{   try{   in.close();      }catch (IOException e){   e.printStackTrace();   }   }   //用反射去创建   Api api=null;   try{   api=(Api)Class.forName(p.getProperty("ImplClass")).newInstance();   }catch (InstantiationException e){   e.printStackTrace();   }catch (IllegalAccessException e){   e.printStackTrace();   }catch(ClassNotFoundException e){   e.printStackTrace();   }    return api;   }}

FactoryTest.properties:(配置文件,添加新类的时候,只需要更改配置文件即可,其他程序都不需要改动。)

ImplClass=a.Impl


运行结果:

impl1 is ggggg


原创粉丝点击