在web开发中我们常用mvc模式进行web应用的开发
当应用进入service 层的时候我们根据不同的业务多逻辑进行处理
当有数据进入controller的时候
public class VirtualController { private static Service service = CommonFactory.getFactory().getInstance(Service.class); public static void main(String[] args) { User nuser= new User(); nuser.setName("李某"); service.insert(nuser); } }
首先是实体类
public class User { public String getName() { return name; } public void setName(String name) { this.name = name; } private String name;}
所以到我们定义一个service 的接口 处理所有用户的业务
//也就是相当于子工厂
public interface Service { public void insert(User user); public void deldte(User user); } //子工厂的实现
public class UserService implements Service{ private Dao dao = CommonFactory.getFactory().getInstance(Dao.class); @Override public void insert(User user) { System.out.println("普通用户业务"); dao.insert(user); } @Override public void deldte(User user) { } }
public class VipService implements Service{ private Dao dao = CommonFactory.getFactory().getInstance(Dao.class); @Override public void insert(User user) { System.out.println("Vip用户业务"); } @Override public void deldte(User user) { } }
Dao层
public interface Dao { public void insert(User user); public void deldte(User user); }
public class MysqlDao implements Dao{ @Override public void insert(User user) { System.out.println("Mysql 插入用户信息 "+ user.getName()); } @Override public void deldte(User user) { } }
public class OrcalDao implements Dao{ @Override public void insert(User user) { System.out.println("Mysql 插入用户信息 "+ user.getName()); } @Override public void deldte(User user) { } }
工厂的实现
public class CommonFactory { private Properties properties=new Properties(); private CommonFactory(){}; private static CommonFactory factroy= new CommonFactory(); public static CommonFactory getFactory(){ return factroy; } publicT getInstance(Class clazz) { try { properties.load(new FileInputStream("C:\\Users\\Administrator.TEDU-20180130RP\\IdeaProjects\\springboot\\hello\\resource\\config.properties")); String _className=clazz.getSimpleName(); String className=properties.getProperty(_className); return (T) Class.forName(className).newInstance(); } catch (Exception e) { e.printStackTrace(); return null; } } }
这样我们就可以通过修改配置文件进行对不同业务的处理,也好像是tomcat 以及jdbc的原理