学习工厂模式笔记

package com.donnie;

/*
 * 
 * class RunServer{
	public static void execute(){
	//没有工长模式
 //假如sdao前面也许还得检查连接数据库,这样做就非常的麻烦
		ServerDao sdao=new DaoImpl();
		sdao.getname();
	}
}

interface ServerDao{   //面象接口编程
	public void getname();
}
class DaoImpl implements ServerDao{
	
	public void getname(){
		System.out.println("not factory");
	}
}

public class Factory {
public static void main(String args[]){
	RunServer.execute();
}
}*/

//工长模式主要应用时模块调用时,模块可调用接口较多的情况,
//实例化一个对象可能要进行复杂操作的情况
class RunServer{
	public static void execute(){
		//如果以后模块要切换的话,可以将getName改为其它
		ServerDao sd=DaoFacorty.getDao("getName");
		sd.getname();
	}
}

class DaoFacorty{
	public static  ServerDao getDao(String daoName){
		if("getName".equals(daoName)){
			//有了工长模式,可以在这里预先准备工作,比如检查连接数据库操作
			/*利用反射机制,可以将ServerDao写入配置文件,这样就连工厂类都可以不用修改
			Class.forName("ServerDao").newInstance(); 
			调有时只要DaoFacorty.getDao("getName")*/
			return new DaoImpl();
		}else if("".equals(daoName)){
			return null;
		}
		return null;
		
	}
	
}
interface ServerDao{   //面象接口编程
	public void getname();
}
class DaoImpl implements ServerDao{
	
	public void getname(){
		System.out.println("Successful factory");
	}
}

public class Factory {
public static void main(String args[]){
	RunServer.execute();
}
}

 

你可能感兴趣的:(编程,工作)