设计模式详解(二)

factory:工厂模式
当使用者不需要知道对象的创建过程的时候,适合用工厂模式。
按照抽象程度又分为三种:简单工厂模式,工厂方法模式,和抽象工厂模式。
比如写一个jdbc底层,支持多数据库的。:

简单工厂模式:
	public static Connection getConnection(String dbName) {
		if (dbName.equals("mysql")) {
			return new MysqlConnection();
		}
		if (dbName.equals("oracle")) {
			return new OracleConnection();
		}
		...
	}


但是呢,各个数据库的差距不仅仅在于此,比如说分页的sql也不一样。我们还需要封装一个分页的sql。就必须得用到工厂方法模式。此模式:顾名思义,工厂是工厂,方法是方法
工厂方法模式:
	public Class MysqlPageHelper implements PageHelper{
		public createPageSql(String sql, int startRow, int pageSize){
		....
	}
		
		public Class OraclePageHelper implements PageHelper{
			public createPageSql(String sql, int startRow, int pageSize){
			....
		}
		public static void main(String[] args) {
			Connection c= new MysqlConnection();
			PageHelper mysqlPageHelper = c.getPageHelper();
			String pageSql = mysqlPageHelper.createPageSql("I am a sql",1,10);
		}	


抽象工厂模式,不解释。

工厂模式的好处在于:维护性增强了。
坏处在于:每加一个类,还得改工厂代码。
spring ioc 相当于一个大的简单工厂,他利用了反射+配置文件的方法,这样就不用修改工厂类了。

singleton:单例模式
很多时候单利模式是有必要的。比如某短信收发网关,连接以后一直在运行着。
注(上面的数据库连接不能做成单例的,只能做成连接池,为什么?因为单例只有一个实例在运行,他会有漫长的等待。)
public class Test1 {
	private static Test1 instance = null;

	private Test1() {
	}

	public static Test1 getInstance() {
		if (instance == null) {
			instance = new Test1();
		}
		return instance;
	}
}


prototype:原型模式
原型模式即java里面的clone方法。
很多人就迷糊了,java每个对象都有的方法,搞一个模式出来?
事实是,设计模式不光是针对java的,我们可以理解为java设计之初就加入了这个模式!
代码:略。

你可能感兴趣的:(java,mysql)