工厂模式四
demo4
用properties保存了全部子类信息,通过代码进行操作
Code
class Factory {
public static Fruit getFruitInstance(String type) {
Fruit f = null;
//通过Class类来完成 通过包名和类名来实例化这个类
//这个方法返回的是object需要一个转型
try {
f=(Fruit)Class.forName(type).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return f;
}
}
//定义一个类来完成从键盘可以输入
class InputData{
BufferedReader buf=null;
public InputData() {
buf=new BufferedReader(new InputStreamReader(System.in));
}
public String getString(){
String str = null ;
try
{
str = buf.readLine() ;
}
catch (Exception e)
{
}
return str ;
}
}
public class factoryDemo4 {
public static void main(String args[]) {
// 以下是以前紧密耦合的工厂使用方法,子类与父类紧紧结合
/**
* Fruit f=new Apple(); f.grow(); f.pick();
*/
// //////////////////////////////
/**
* //下面用上面的类Factory来实现 Fruit f=Factory.getFruitInstance(); f.grow();
* f.pick(); /////////////////////////////
*/
/**
// demo2 中对其进行修改
if (args.length == 0) {
System.out.println("请输入要使用的类名称:");
System.exit(1);
}
Fruit f = Factory.getFruitInstance(args[0]);
if (f != null) {
f.grow();
f.pick();
} else {
System.out.println("没有发现这个类型。");
}
*/
//以下是对3的修改
Properties p = new Properties() ;
p.setProperty("a","com.miao.factoryDeom4.Apple");
p.setProperty("b","com.miao.factoryDeom4.Orange");
//告诉用户的代码与类的映射
System.out.println(p) ;
// 加入一个可以从键盘输入数据的类
System.out.print("输入要使用的子类代码:") ;
String code = new InputData().getString() ;
System.out.println(p.getProperty(code)) ;
Fruit f = Factory.getFruitInstance(p.getProperty(code)) ;
if(f!=null)
{
f.grow() ;
f.pick() ;
}
else
{
System.out.println("没有发现这个类型。") ;
}
}
}
class Factory {
public static Fruit getFruitInstance(String type) {
Fruit f = null;
//通过Class类来完成 通过包名和类名来实例化这个类
//这个方法返回的是object需要一个转型
try {
f=(Fruit)Class.forName(type).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return f;
}
}
//定义一个类来完成从键盘可以输入
class InputData{
BufferedReader buf=null;
public InputData() {
buf=new BufferedReader(new InputStreamReader(System.in));
}
public String getString(){
String str = null ;
try
{
str = buf.readLine() ;
}
catch (Exception e)
{
}
return str ;
}
}
public class factoryDemo4 {
public static void main(String args[]) {
// 以下是以前紧密耦合的工厂使用方法,子类与父类紧紧结合
/**
* Fruit f=new Apple(); f.grow(); f.pick();
*/
// //////////////////////////////
/**
* //下面用上面的类Factory来实现 Fruit f=Factory.getFruitInstance(); f.grow();
* f.pick(); /////////////////////////////
*/
/**
// demo2 中对其进行修改
if (args.length == 0) {
System.out.println("请输入要使用的类名称:");
System.exit(1);
}
Fruit f = Factory.getFruitInstance(args[0]);
if (f != null) {
f.grow();
f.pick();
} else {
System.out.println("没有发现这个类型。");
}
*/
//以下是对3的修改
Properties p = new Properties() ;
p.setProperty("a","com.miao.factoryDeom4.Apple");
p.setProperty("b","com.miao.factoryDeom4.Orange");
//告诉用户的代码与类的映射
System.out.println(p) ;
// 加入一个可以从键盘输入数据的类
System.out.print("输入要使用的子类代码:") ;
String code = new InputData().getString() ;
System.out.println(p.getProperty(code)) ;
Fruit f = Factory.getFruitInstance(p.getProperty(code)) ;
if(f!=null)
{
f.grow() ;
f.pick() ;
}
else
{
System.out.println("没有发现这个类型。") ;
}
}
}