Java工厂设计模式
2016-03-04 10:51
591 查看
程序在接口和子类之间加入一个过渡类,通过此过渡类端取得接口的实例化对象,一般都会称这个过渡端为工厂类
![](http://images2015.cnblogs.com/blog/517519/201603/517519-20160320153700021-806115254.png)
结合属性文件的工厂模式
![](http://images2015.cnblogs.com/blog/517519/201603/517519-20160320154157568-1545468328.png)
//================================================= // File Name : factory //------------------------------------------------------------------------------ // Author : Common // 接口名:Fruit // 属性: // 方法: interface Fruit{ public void eat(); } //类名:Apple //属性: //方法: class Apple implements Fruit{ @Override public void eat() { // TODO 自动生成的方法存根 System.out.println("eat apple!"); } } //类名:Orange //属性: //方法: class Orange implements Fruit{ @Override public void eat() { // TODO 自动生成的方法存根 System.out.println("eat orange!"); } } //类名:Factory //属性: //方法: class Factory{ //定义工厂类 public static Fruit getInstance(String className){ Fruit f = null; //定义接口对象 if("apple".equals(className)){ //判断是哪个类的标记 f = new Apple(); } if("orange".equals(className)){ //判断是哪个类的标记 f = new Orange(); } return f; } } //主类 //Function : 工厂设计模式 public class factory { public static void main(String[] args) { // TODO 自动生成的方法存根 Fruit f = null; //定义接口对象 f = Factory.getInstance("apple"); //通过工厂取得实例 f.eat(); //调用方法 } }
![](http://images2015.cnblogs.com/blog/517519/201603/517519-20160320153700021-806115254.png)
//================================================= // File Name : factory //------------------------------------------------------------------------------ // Author : Common // 接口名:Fruit // 属性: // 方法: interface Fruit{ public void eat(); } //类名:Apple //属性: //方法: class Apple implements Fruit{ @Override public void eat() { // TODO 自动生成的方法存根 System.out.println("eat apple!"); } } //类名:Orange //属性: //方法: class Orange implements Fruit{ @Override public void eat() { // TODO 自动生成的方法存根 System.out.println("eat orange!"); } } //类名:Factory //属性: //方法: class Factory{ //定义工厂类 public static Fruit getInstance(String className){ Fruit f = null; //定义接口对象 try{ f = (Fruit)Class.forName(className).newInstance(); //实例化对象 }catch(Exception e){ e.printStackTrace(); } return f; } } //主类 //Function : 工厂设计模式 public class factory { public static void main(String[] args) { // TODO 自动生成的方法存根 Fruit f = null; //定义接口对象 f = Factory.getInstance("Apple"); //通过工厂取得实例 f.eat(); //调用方法 } }
结合属性文件的工厂模式
![](http://images2015.cnblogs.com/blog/517519/201603/517519-20160320154157568-1545468328.png)
![](http://images2015.cnblogs.com/blog/517519/201603/517519-20160320154240381-226064870.png)
相关文章推荐
- Intellij IDEA依赖同步及乱码问题
- Java Web传统SSH框架与JFinal框架比较
- java设计模式-单例模式
- Java实现多线程下载文件
- 【leetcode】【102】Binary Tree Level Order Traversal
- java学习之路- 程序打包成jar
- Java类加载问题:变量初始化顺序
- leetcode:Valid Parentheses 【Java】
- java的类载入器
- 【leetcode】【101】Symmetric Tree
- Spring 4.2.4.RELEASE MVC 学习笔记 - 7 - RestFull API(咋个办呢 zgbn)
- hibernate 与spring
- Java实现将指定目录内的指定类型的文件归类
- [Java] 作业1答疑
- spring mvc拦截器和<mvc:annotation-driven />的详解
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- Java基础之集合
- 【leetcode】【100】Same Tree
- Java中的File类
- 《THINKING IN JAVA》随笔