标签:工厂模式
抽象创建类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