简单工厂设计模式
2015-08-04 21:10
288 查看
领卓教育培训第二十二天
简单工厂模式由三种角色组成:
1、工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
2、抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
3、具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
创建Studen类实现Person接口
创建Teacher类实现Person接口
在项目中创建一个properties文件,命名为config.properties
创建工厂类
创建Test类
运行结果:
这样一个简单工厂模式就写好了,要想工厂创建Teacher类的实例时,只需将properties文件的Student改为Teacher即可,且无需重新编译!当需要添加内容的时候,只需新建一个类实现Person接口。
简单工厂设计模式
简介
当我们在做一个项目的时候,往往会对代码改了又改,删了又删,寻求一个最完美的方案,当在调试的时候,每运行一次,都要重新进行编译。所以,要求我们在有新的需求或新的想法的时候,不是修改代码,而是增加代码的方式来实现,而且尽量让运行时,不再重新编译!简单工厂模式由三种角色组成:
1、工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
2、抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
3、具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
代码示例
创建Person接口[code] public interface Person { public void sleep(); }
创建Studen类实现Person接口
[code]public class Student implements Person{ @Override public void sleep() { System.out.println("学生睡觉!"); } }
创建Teacher类实现Person接口
[code]public class Teacher implements Person{ @Override public void sleep() { System.out.println("老师睡觉!"); } }
在项目中创建一个properties文件,命名为config.properties
[code]object=lz20150804.d1.Student //包名.类名
创建工厂类
[code]import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; public class Factory { public static Person creatPerson() { Person person=null; Properties p = new Properties(); try { p.load(new FileInputStream("config.properties")); String name=p.getProperty("object"); Class clazz=Class.forName(name); person=(Person) clazz.newInstance(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return person; } }
创建Test类
[code]public class Test { public static void main(String[] args) { Person person=Factory.creatPerson(); person.sleep(); } }
运行结果:
这样一个简单工厂模式就写好了,要想工厂创建Teacher类的实例时,只需将properties文件的Student改为Teacher即可,且无需重新编译!当需要添加内容的时候,只需新建一个类实现Person接口。
相关文章推荐
- 面试题总结10
- 27 水池数目【dfs】
- 安装部署 CoreOS + Kubernetes 3
- 删除所有的.svn 文件
- HD1047 Integer Inquiry 【大数问题】
- Android searchView关于Iconified表现行为不一致的探讨
- Map遍历的几种方法
- 操作线程的方法
- 2015 多校赛 第四场 1010 (hdu 5336)
- nginx如何设置访问跳转到一个固定页面
- POJ C程序设计进阶 编程题#1:寻找下标
- Java_Web三大框架之Hibernate+HQL语言基础
- BFS(最短路+路径打印) POJ 3984 迷宫问题
- Contest 4 1009 Walk Out【bfs】
- SQL server2008 身份认证模式修改密码
- 利用坐标求任意多边形面积
- 20150804-线程
- Redis入门很简单之六【Jedis常见操作】
- 时间Date的各种获取方式
- IO流