在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的原理

工厂模式在mvc模型中的应用的更多相关文章

  1. 《设计模式面试小炒》策略和工厂模式替代业务场景中复杂的ifelse

    <设计模式面试小炒>策略和工厂模式替代业务场景中复杂的ifelse 我是肥哥,一名不专业的面试官! 我是囧囧,一名积极找工作的小菜鸟! 囧囧表示:小白面试最怕的就是面试官问的知识点太笼统, ...

  2. [原]命令模式在MVC框架中的应用

    其实在项目开发中,我们使用了大量的设计模式,只是这些设计模式都封装在框架中了,如果你想要不仅仅局限于简单的使用,就应该深入了解框架的设计思路. 在MVC框架中,模式之一就是命令模式,先来看看模式是如何 ...

  3. 命令模式在MVC框架中的应用

    事实上在项目开发中,我们使用了大量的设计模式,不过这些设计模式都封装在框架中了,假设你想要不只局限于简单的使用,就应该深入了解框架的设计思路. 在MVC框架中,模式之中的一个就是命令模式,先来看看模式 ...

  4. 在商城系统中使用设计模式----简单工厂模式之在springboot中使用简单工厂模式

    1.前言: 不了解简单工厂模式请先移步:在商城中使用简单工厂.在这里主要是对springboot中使用简单工厂模式进行解析. 2.问题: 什么是简单工厂:它的实现方式是由一个工厂类根据传入的参数,动态 ...

  5. IIS经典模式和集成模式在管道模型中的不同

    问题: 有时候我们配置IIS后可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 其中由 ...

  6. 设计模式-结构型模式, mvc 模型视图控制器模式(8)

    MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它 ...

  7. Spring中的工厂模式和单例模式

    Spring预备知识(适合中小型项目) 作用:集成和管理其他框架 工厂模式: A  a  = new A( ); 将类所要创建的对象写入工厂,统一进行管理 package com.spring; pu ...

  8. Java反射机制在工厂模式中的应用

    在本篇文章中就不详细介绍工厂模式,主要介绍一下反射在工厂模式中的使用,让读者对反射机制带来的好处有更深的认识. 首先看一下简单工厂模式 简单工厂模式(simple factory)是类的创建模式,又叫 ...

  9. Java设计模式(一) 简单工厂模式不简单

    摘要:本文介绍了简单工厂模式的概念,优缺点,实现方式,以及结合Annotation和反射的改良方案(让简单工厂模式不简单).同时介绍了简单工厂模式(未)遵循的OOP原则.最后给出了简单工厂模式在JDB ...

随机推荐

  1. 06: RGB、YUV和HSV颜色空间模型

    RGBA是代表Red(红色)Green(绿色)Blue(蓝色)和Alpha的色彩空间 YUV:Y"表示明亮度(Luminance或Luma),也就是灰阶值:而"U"和&q ...

  2. [VB.NET Tips]ParamArray参数数组

    ParamArray参数数组,可以理解为传递给方法的多余的参数全都存放在这个数组中. ParamArray只能是ByVal按值传递,不能是可选参数,而且只能做为方法定义的最后一个参数. 非常类似于Py ...

  3. JavaScript之对象基础

    现实世界是由无数的事物或对象组成,事物都有各独特的属性和一些动作行为,一般我们可以通过事物的某些特征或行为动作描述它.JavaScript中也是如此,JavaScript对象是多个键值对的集合,键我们 ...

  4. Audio Bit Depth Super-Resolution with Neural Networks

    Audio Bit Depth Super-Resolution with Neural Networks 作者:Thomas Liu.Taylor Lundy.William Qi 摘要 Audio ...

  5. Github 入门1 (下载git , 连接本地库与github仓库)

    /* 本篇建立在以注册GitHub账号的前提下*/ (1)  下载 git  https://www.git-scm.com // win10 可以直接红色箭头标识的 Download 2.22.0 ...

  6. Apache Thrift 的基本使用

    Apache Thrift 的基本使用 可以先看看官网是如何介绍的 The Apache Thrift software framework, for scalable cross-language ...

  7. 讨论c/c++计算小数的精度问题

    求出所有100以下整数与一位小数相乘等于相加的浮点数这个有Bug浮点数计算时精度会出现误差 除非使用非常精确的类型或限制浮点的位数 比如 #include <iostream> int m ...

  8. .net core 3.0 Signalr - 实现一个业务推送系统

    ## 介绍 ASP.NET Core SignalR 是一个开源代码库,它简化了向应用添加实时 Web 功能的过程. 实时 Web 功能使服务器端代码能够即时将内容推送到客户端. SignalR 的适 ...

  9. POJ 2431——Expedition(贪心,优先队列)

    链接:http://poj.org/problem?id=2431 题解 #include<iostream> #include<algorithm> #include< ...

  10. 虚拟现实中自由步行(free-space walking)

    之前我们讲到了虚拟现实中漫游方式的分类.虚拟现实中的漫游(travel/navigate)方式,即是应用提供给用户的,在虚拟环境中移动的方式.虚拟现实的漫游方式中,有一种被称为“完全动作线索”1,即用 ...