标签:checked source file one for factor 数据 cep 模式
工厂模式相当于创建对象的new。如A a=new A(). 工厂模式也是用来创建实例对象的,但它是面向接口编程,提高了代码的扩展性和维护性。
例:这两天我太累了,想去按摩店按摩。每位技师都有不同的特长,我只需要告诉她我要什么服务,她就能帮忙实现,而不需要管具体是哪位技师。
//创建对象的接口 public interface Massage { //需要按摩服务 public void massagist(); } //工厂1 class Massage1 implements Massage{ @Override public void massagist() { System.out.println("7号技师为您泰式足底按摩90分钟"); } } //工厂2 class Massage2 implements Massage{ @Override public void massagist() { System.out.println("13号技师为您精油推背90分钟"); } } //工厂3 class Massage3 implements Massage{ @Override public void massagist() { System.out.println("27号技师为你前列腺按摩120分钟"); } }
测试类:
//测试类 public class Test { public static void main(String[] args) { Massage m1 = new Massage1(); m1.massagist(); Massage m2 = new Massage2(); m2.massagist(); Massage m3 = new Massage3(); m3.massagist(); } } ========================= 【控制台输出】 7号技师为您泰式足底按摩90分钟 13号技师为您精油推背90分钟 27号技师为你前列腺按摩120分钟
// 创建bean工厂 public interface BeanFactory { Object getBean(String id) throws ExecutionException; } // Bean工厂的实现类 public class ClassPathXmlApplicationContext implements BeanFactory { private Map<String, Object> map = new HashMap<String, Object>(); @SuppressWarnings("unchecked") public ClassPathXmlApplicationContext(String fileName) throws DocumentException, InstantiationException, IllegalAccessException, ClassNotFoundException { //加载配置文件 SAXReader reader = new SAXReader(); Document document = reader.read(ClassPathXmlApplicationContext.class.getClassLoader().getResourceAsStream(fileName)); //获取根节点 Element root = document.getRootElement(); //获取子节点 List<Element> childElements = root.elements(); for (Element element : childElements) { map.put(element.attributeValue("id"), Class.forName(element.attributeValue("class")).newInstance()); } } @Override public Object getBean(String id) throws ExecutionException { return map.get(id); } }
还有Hibernate 换数据库只需换方言和驱动就可以,这也是工厂模式的实现。
标签:checked source file one for factor 数据 cep 模式
原文地址:https://www.cnblogs.com/wlwl/p/9478941.html