工厂模式在mvc模型中的应用

在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;
}
public <T> T getInstance(Class<T> 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的原理

猜你喜欢

转载自www.cnblogs.com/qxhn/p/9124632.html