CMS项目总结:6、将数据库的操作代码从servlet中剥离,封装到DAO中

工厂设计模式是所有设计模式中最简单的设计模式!!!(就是通过工厂来创建一些对象)

工厂模式的典型应用场景:创建对象(当我们感觉到创建对象是件很痛苦的事,会用工厂模式) 

工厂模式:简单工厂,工厂方法,抽象工厂(要支持创建多个产品,定义一个抽象工厂,抽象工厂中有多个工厂方法,可以创建多个产品)

工厂方法:CMS项目总结:6、将数据库的操作代码从servlet中剥离,封装到DAO中_第1张图片

CMS项目总结:6、将数据库的操作代码从servlet中剥离,封装到DAO中_第2张图片

抽象工厂:利用工厂方法实现抽象工厂

CMS项目总结:6、将数据库的操作代码从servlet中剥离,封装到DAO中_第3张图片

CMS项目总结:6、将数据库的操作代码从servlet中剥离,封装到DAO中_第4张图片

 

为了避免直接在servlet中看到操作数据库的代码(直接在servlet中通过JDBC访问数据库),并且由于数据库的不同,操作代码也不同,譬如分页查询的sql语句,mysql的可以:select * from t_article where title like '%"+title+"%' limit ?,?,而在oracle中是不可以用limit的。

实现方法为:创建一个接口ArticleDao

CMS项目总结:6、将数据库的操作代码从servlet中剥离,封装到DAO中_第5张图片

然后创建两个实现了ArticleDao接口的类:ArticleDaoImpl(具体实现了操作MySQL数据库的类)和ArticleDaoImplForOracle(具体实现了操作Oracle数据库的类)。

HashMap是线程不安全的对象,而Hashtable<>是线程安全的对象。

public class Hashtable<K,V> 

extends Dictionary<K,V> 

implements Map<K,V>, Cloneable, java.io.Serializable {}

Properties extends Hashtable<Object,Object>继承了Hashtable,它有更强大的功能,Properties 可以直接读取文件,而且可以将文件中的键值对直接放到Map中来(Properties就是一个Map),调用Properties load方法(HashMapHashtable中没有load方法),能够 

通常DAO是无状态的。

Servlet不仅仅可以处理来自客户端的请求,还可以利用他的init方法来做些我们想做的初始化工作。

任何一个请求servlet发到服务器端,都会先调用servlet中的service()方法,在service方法中根据请求的Httphead里面携带的有关这个请求方法的信息,譬如是get或者post方法,然后把这个请求转发给doGet()或者doPost(),实际上任何一个servlet都有一个唯一的入口,即service()方法,所以可以在到达doGet()或者doPost()方法之前,在service()方法中执行一些操作。

父类中的this是多态的,他是具体的子类对象,而不是父类对象。

Spring的主体思想就是DI(依赖注入)IOC

你可能感兴趣的:(设计模式,数据库,servlet,properties,HashMap,service)