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();
}
}