java中的设计模式(二)--工厂方法模式 反射机制
2013-09-13 11:45
155 查看
上一次提到了工厂方法模式,经过查阅相关资料,发现可以有改进之处:
改进1.工厂方法
[html] view
plaincopy
package com.sf.hf;
import com.sf.entity.Apple;
import com.sf.entity.Banana;
import com.sf.jk.Fruit;
public class FruitFactory {
public class FruitFactory {
public static Fruit createFruit(Class c){
//定义一个水果对象
Fruit fruit = null;
try {
fruit = (Fruit) Class.forName(c.getName()).newInstance();
} catch (Exception e) {
System.out.println("创建出错");
}
return fruit;
}
}
}
改进2.客户端调用
[html] view
plaincopy
import com.sf.entity.Apple;
import com.sf.entity.Banana;
import com.sf.hf.FruitFactory;
import com.sf.jk.Fruit;
public class Test {
public static void main(String[] args) {
System.out.println("---------创建苹果---------");
Fruit apple = FruitFactory.createFruit(Apple.class);
apple.eat();
apple.plant();
System.out.println("---------创建香蕉---------");
Fruit banana = FruitFactory.createFruit(Banana.class);
banana.eat();
banana.plant();
}
}
运行结果:
[html] view
plaincopy
---------创建苹果---------
生产水果
苹果可以吃
苹果可以种
---------创建香蕉---------
生产香蕉
香蕉可以吃
香蕉可以种
上一次提到的工厂方法是将工厂抽象成一个方法,具体生产产品的方法教给其子类或者实现该接口的子类,
这里用了反射机制省去了具体的工厂实现类,当需要扩展产品的时候,只要传入不同的产品类即可。
客户端调用的时候只需要将产品类传入即可,如 Apple.class
改进1.工厂方法
[html] view
plaincopy
package com.sf.hf;
import com.sf.entity.Apple;
import com.sf.entity.Banana;
import com.sf.jk.Fruit;
public class FruitFactory {
public class FruitFactory {
public static Fruit createFruit(Class c){
//定义一个水果对象
Fruit fruit = null;
try {
fruit = (Fruit) Class.forName(c.getName()).newInstance();
} catch (Exception e) {
System.out.println("创建出错");
}
return fruit;
}
}
}
改进2.客户端调用
[html] view
plaincopy
import com.sf.entity.Apple;
import com.sf.entity.Banana;
import com.sf.hf.FruitFactory;
import com.sf.jk.Fruit;
public class Test {
public static void main(String[] args) {
System.out.println("---------创建苹果---------");
Fruit apple = FruitFactory.createFruit(Apple.class);
apple.eat();
apple.plant();
System.out.println("---------创建香蕉---------");
Fruit banana = FruitFactory.createFruit(Banana.class);
banana.eat();
banana.plant();
}
}
运行结果:
[html] view
plaincopy
---------创建苹果---------
生产水果
苹果可以吃
苹果可以种
---------创建香蕉---------
生产香蕉
香蕉可以吃
香蕉可以种
上一次提到的工厂方法是将工厂抽象成一个方法,具体生产产品的方法教给其子类或者实现该接口的子类,
这里用了反射机制省去了具体的工厂实现类,当需要扩展产品的时候,只要传入不同的产品类即可。
客户端调用的时候只需要将产品类传入即可,如 Apple.class
相关文章推荐
- java中的设计模式(二)--工厂方法模式 反射机制
- java通过反射机制实现工厂设计模式
- java中的反射三(反射机制深入---工厂设计模式)
- java中的设计模式(三)--抽象工厂模式 反射机制
- 15. JAVA 反射机制 Part 2(动态代理、类的生命周期、工厂设计模式) ----- 学习笔记
- [零基础学JAVA]Java SE应用部分-36.反射机制与工厂设计模式 推荐
- java设计模式---工厂方法模式
- java设计模式:工厂方法模式
- Java设计模式_观察者模式&事件处理机制
- Java设计模式菜鸟系列(四)工厂方法模式建模与实现
- Java设计模式之-工厂方法模式
- 重学java23种设计模式(1)工厂方法模式
- JAVA设计模式-02-工厂方法模式
- java设计模式学习笔记--工厂方法模式
- java设计模式——工厂方法模式
- 【GOF23设计模式】_观察者模式_广播机制_消息订阅_网络游戏对战原理_自带类与接口JAVA251-252
- java23种常用设计模式之工厂方法模式(Factory Method)2
- 重踏学习Java路上_Day27(反射,模式设计,jdk新特性)
- 最常用的Java设计之一 观察者模式 在android中的实例 ListView Adapter机制
- 【设计模式】java设计模式实现随机生成员工并应用反射