zoukankan      html  css  js  c++  java
  • 工厂模式在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的原理

  • 相关阅读:
    ubuntu18+k8s单机版+kuboard+harbor安装笔记
    Apache commons StringSubstitutor 替换占位符
    Kafka消费与心跳机制
    本地机器如何访问服务器上的docker容器内的tensorboard?
    Pytorch cuDNN error: CUDNN_STATUS_NOT_SUPPORTED.解决办法
    Docker常用方法总结
    SpringBoot
    新版chrome中非https无法打开摄像头
    DDIA----笔记(不定时更新)
    Windows 无法验证此设备所需的驱动程序的数字签名。最近的硬件或软件更改安装的文件可能未正确签名或已损坏,或者可能是来自未知来源的恶意软件。 (代码 52)
  • 原文地址:https://www.cnblogs.com/qxhn/p/9124632.html
Copyright © 2011-2022 走看看