【设计模式练习】工厂模式
2013-02-20 23:06
211 查看
1. 简单工厂
在接口和子类中,避免这两者之前的直接操作。加入工厂类,工厂类来负现生产出你需要的对象。
此以后的维护中,即便有新的子类继承了接口,但是你只需要关心工厂类把它生产出来即可。入口执行的代码可以不用变
这种简单的工厂在处理同一类产品的时候还是比较方便的 ,但是如果分类越细。则就不能这样使用了。比如苹果,我可以生产红富士也可以
生产将军等其化品种
上述方法还有一个缺陷就是当接口有更多的子类来继承的时候
工厂类也需要跟着修改,如果使用反射则可以解决这样的问题
需要注意的是子类需要有无参的构造方法
在接口和子类中,避免这两者之前的直接操作。加入工厂类,工厂类来负现生产出你需要的对象。
此以后的维护中,即便有新的子类继承了接口,但是你只需要关心工厂类把它生产出来即可。入口执行的代码可以不用变
这种简单的工厂在处理同一类产品的时候还是比较方便的 ,但是如果分类越细。则就不能这样使用了。比如苹果,我可以生产红富士也可以
生产将军等其化品种
package com.ryan; interface Fruite { public abstract void eat(); } class Apple implements Fruite { public void eat() { System.out.println("吃苹果"); } } class Orange implements Fruite { public void eat() { System.out.println("吃橘子"); } } //造各种水果 class Factory { public Fruite getFruite(String fruite) throws Exception { if(fruite.equals("Apple")) { return new Apple() ; }else if(fruite.equals("Orange")) { return new Orange(); }else { throw new Exception("没有此类水果"); } } } public class TestFactoryMode { public static void main(String[] args) { try { new Factory().getFruite("Apple").eat(); new Factory().getFruite("Orange").eat(); } catch (Exception e) { e.printStackTrace(); } } }
上述方法还有一个缺陷就是当接口有更多的子类来继承的时候
工厂类也需要跟着修改,如果使用反射则可以解决这样的问题
需要注意的是子类需要有无参的构造方法
package com.ryan; interface Fruite { public abstract void eat(); } class Apple implements Fruite { public void eat() { System.out.println("吃苹果"); } } class Orange implements Fruite { public void eat() { System.out.println("吃橘子"); } } class Factory { public Fruite getFruite(String className) throws Exception { //使用反射后,只需要传入包.类名称当 //当子类有扩展后,此工厂类也不需要修改 Class<?> c = Class.forName(className); Fruite instatnce = (Fruite)c.newInstance(); return instatnce; } } public class TestFactoryMode { public static void main(String[] args) { try { new Factory().getFruite("com.ryan.Apple").eat(); new Factory().getFruite("com.ryan.Orange").eat(); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- 设计模式之工厂方法
- 简单工厂设计模式
- Java设计模式——简单工厂设计模式
- J2EE初级学习——设计模式-工厂模式和单例模式
- C#简单工厂设计模式
- 设计模式1:简单工厂
- 设计模式之简单工厂模式;
- C#设计模式---简单工厂
- 设计模式之工厂模式
- 设计模式:工厂模式
- 设计模式——工厂模式
- 【设计模式】抽象工厂
- 设计模式之工厂
- 设计模式 - 工厂模式(factory pattern) 详解
- java设计模式之工厂模式(Factory)
- java 设计模式整理之工厂方法(1)
- 浅析设计模式之工厂方法
- c#设计模式- Factory Method模式(工厂方法)
- java 为什么使用工厂方法设计模式
- java设计模式之工厂模式