您的位置:首页 > 编程语言 > Java开发

每天一整理-java设计模式之工厂模式模式

2017-05-01 09:26 375 查看
工厂模式是我们很常用的一个模式,在ssh框架和ssm框架中都普遍使用到的工厂模式

工厂模式的定义一个用于创建对象的接口,让子类决定实例化哪个类

在这里我主要讲通过反射机制来决定生成类的工厂实现方法

产品抽象类productpackage singleinstance;

public abstract class Product {
public abstract void method();

}
//产品A
package singleinstance;

public class ProductA extends Product {

@Override
public void method() {
// TODO Auto-generated method stub
System.out.println("product A");

}

}
//产品B
package singleinstance;

public class ProductB extends Product{

@Override
public void method() {
// TODO Auto-generated method stub
System.out.println("productB");

}

}
//工厂抽象类

package singleinstance;

public abstract class Factory {
//抽象类具体生成由子类实现
public abstract<T extends Product> T createProcuct(Class<T> clz);

}
package singleinstance;

public abstract class Factory {
//抽象类具体生成由子类实现
public abstract<T extends Product> T createProcuct(Class<T> clz);

}
//产品实现类
package singleinstance;

public class ConcreteFactory extends Factory{

@Override
public <T extends Product> T createProcuct(Class<T> clz) {
// TODO Auto-generated method stub
Product p =null;
try {
p=(Product) Class.forName(clz.getName()).newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return (T) p;
}

}



//具体工厂类

package singleinstance; public class ConcreteFactory extends Factory{ @Override public <T extends Product> T createProcuct(Class<T> clz) { // TODO Auto-generated method stub Product p =null; try { p=(Product) Class.forName(clz.getName()).newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return (T) p; } }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  工厂模式