标签:工厂模式
抽象创建类Creator : 基于抽象层面,关心的只是抽象层,而不关心子类。类似于接口编程
public abstract class Product {
//产品类的公共方法
public void method1(){
//业务逻辑处理
}
//抽象方法
public abstract void method2();
}public abstract class Creator {
/*
* 创建一个产品对象,其输入参数类型可以自行设置
* 通常为String、Enum、Class等,当然也可以为空
*/
public abstract <T extends Product> T createProduct(Class<T> c);
}public class ConcreteCreator extends Creator {
public <T extends Product> T createProduct(Class<T> c){
Product product=null;
try {
product = (Product)Class.forName(c.getName()).newInstance();
} catch (Exception e) {
//异常处理
}
return (T)product;
}
}ad
public interface Human {
public void getColor();
public void talk();
}public class WhiteMan implements Human {
public void getColor() {
System.out.println("白种人");
}
public void talk() {
System.out.println("English");
}
}public abstract class AbstractFactory {
public abstract <T extends Human> T createHuman(Class<T> c);
}public class HumanFactory extends AbstractFactory {
@Override
public <T extends Human> T createHuman(Class<T> c) {
Human human=null;
try {
human=(Human)Class.forName(c.getName()).newInstance();
} catch (Exception e) {
System.out.println("生产人失败");
}
return (T)human;
}
}
public static void main(String[] args) {
AbstractFactory factory=new HumanFactory();
WhiteMan whiteMan= factory.createHuman(WhiteMan.class);
whiteMan.getColor();
whiteMan.talk();
}public class SingletonFactory {
private static Emperor emperor; //参照上一篇博客
static{
try {
Class cl=Class.forName(Emperor.class.getName()); //获取class对象
Constructor constructor=cl.getDeclaredConstructor(); //获取构造方法
constructor.setAccessible(true); //设置构造方法为可访问
emperor=(Emperor) constructor.newInstance(); //实例化
} catch (Exception e) {
e.printStackTrace();
}
}
public static Emperor getEmperor(){
return emperor;
}
} public class JDBCPool {
private static final Map<String,Connection> prMap=new HashMap();
private final static int MaxConections=5; //最大连接数
public static synchronized Connection createConnection(String connName){
Connection con=null;
if(prMap.size()<MaxConections){
con=new Connection();
prMap.put(connName, con);
}
return con;
}
}我是菜鸟,我在路上。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:工厂模式
原文地址:http://blog.csdn.net/cjvs9k/article/details/46941491