- 論壇徽章:
- 0
|
一般的構(gòu)件都會(huì)圍繞一個(gè)主體對象開展,
如: Hibernate的Session, Spring的Bean等
通常都需要一個(gè)配置文檔, 一個(gè)建造主體對象的工廠
Hibernate:
Configuration config = new Configuration().config(new File("hib.cfg.xml")); // 配置
SessionFactory sessionFactory = config.buildSessionFactory(); // 創(chuàng)建
Session session = sessionFactory.openSession(); // 使用
Spring:
Resource resource = new ClassPathResource("bean.xml"); // 配置
BeanFactory factory = new XmlBeanFactory(resource); // 創(chuàng)建
MyBean myBean = (MyBean)factory.getBean("myBean"); // 使用
Hibernate 使用建造者模式, 封裝了工廠的具體實(shí)現(xiàn),很多框架都使用這種方式導(dǎo)出(如:FreeMarker)。
Spring 直接new工廠的具體實(shí)現(xiàn), 但多態(tài)性更強(qiáng)些,便于擴(kuò)展實(shí)現(xiàn)。
MeteorTL當(dāng)前選擇的是建造者模式:
Configuration config = new Configuration(); config.loadConfig("template.xml"); // 配置
// config.addDirective("xxx.xxx.XXXDirective"); // 可編程控制配置
TemplateFactory factory = config.buildTemplateFactory(); // 創(chuàng)建
Template template = factory.getTemplate("index.mtl"); // 使用
如果模仿Spring
Resource resource = new ClassPathResource("template.xml"); // 配置
TemplateFactory factory = new XmlTemplateFactory(resource); // 創(chuàng)建
// factory.addDirective("xxx.xxx.XXXDirective"); // 可編程控制配置
Template template = factory.getTemplate("index.mtl"); // 使用
哪種API使用接口更合理?
當(dāng)然還有更多其它方式,歡迎討論。 |
|