基于MVC设计模式的两种软件架构简介


List<Action> Cmd代表要执行的任务,可拆解成一个或一组动作(Action)。
1.1 执行一个简单的插入命令,只需要创建一个插入Action即可;
1.2 若要实现一个复杂的事务(一组增删改操作),则可将这些增删改的Action创建成一个复合Action;
1.3 若要实现简单的搜索,只需创建一个查询Action即可;
1.4 若要实现级联查询,则需要创建一个复合查询Action,即父查询Action添加与之级联的子搜索Action,组合成一个复合查询Action。
PS:若业务逻辑很简单,Control可直接调用Dao;
2.List<Action> Undo和Redo,用于实现Undo(撤销)和Redo(重做);具体实现需要Action配合。
3.Action执行任务采用命令模式,真正的执行在IDao对象执行(命令与实现分离,易于扩展),IDao对象采用抽象工厂模式创建。
4.ConcreteDao实现IDao接口,侧重增删改查的逻辑实现,具体实现由DBHelper执行。

2.SearchCond定义了搜索条件,可灵活地增加和删除搜索条件,并支持组合方式。
使用SearchCond即可满足搜索单表查询要求;
当级联搜索时,子表的搜索条件可添加到父表的搜索条件中,作为一个符合的搜索条件ConcreteCond。
3.ADOBaseDao和OCIBaseDao实现IBaseDao的接口,为其子类提供基础服务。(类和接口继承)
4.使用IDao,可以面向接口编程,可以灵活地切换Dao的具体实现方式。
基于MVC设计模式的两种软件架构简介的更多相关文章
- 基于MVC设计模式的Web应用框架:struts2的简单搭建(一)
Struts2的初步介绍 Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴.京东等互联网.政府.企业门户网站.虽然之前存在了很大的安全漏洞,在2013年让苹果.中国移动.中国联 ...
- iOS 基于MVC设计模式的基类设计
iOS 基于MVC设计模式的基类设计 https://www.jianshu.com/p/3b580ffdae00
- Struts2是一个基于MVC设计模式的Web应用框架
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互. Struts ...
- C#将Word转换成PDF方法总结(基于Office和WPS两种方案)
有时候,我们需要在线上预览word文档,当然我们可以用NPOI抽出Word中的文字和表格,然后显示到网页上面,但是这样会丢失掉Word中原有的格式和图片.一个比较好的办法就是将word转换成pdf,然 ...
- JavaWeb:基于MVC设计模式的一个小案例(一)
(未经允许,请勿转载,谢谢.) 本案例的处理过程: 客户端发送一个请求给服务器,服务器把这个请求给Servlet,Servlet 获取请求信息,根据请求信息的情况去调用 model (在这里是一个普通 ...
- 基于python的selenium两种文件上传操作
方法一.input标签上传 如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法. 方法二.非input标签上传 这种上传方 ...
- iOS开发--Swift 基于MVC设计模式的简单的tableViewDemo
如果说MVC是最好的设计模式, 可能很多人并不赞同, 但是如果说MVC是最主流, 应用面最广的设计模式, 我想这是毫无争议的. 不说废话, 直接演示在Swift中如何使用MVC新建工程(我并没有新建文 ...
- Spring基于注解注入的两种方式
1.@Autowried 1)默认基于类型查找容器的的Bean进行注入(注入的Bean的实现类是唯一的). 2)当实现类的Bean大于一个的时候,需结合@Qualifier,根据Bean的名称来指定需 ...
- MVC CRUD 的两种方法
//Index.cshtml @model IQueryable<MvcExam2.Models.Product>@{ Layout = null;}<!DOCTYPE htm ...
随机推荐
- JAVA变量的类型,定义变量
JAVA中常用的数据类型 数据类型 数据类型解释 说明 char 字符型 用于存储单个字符,如:性别“男”.“女”,电灯“开”.“关” int 整形 用于存储整数,如一天的时间是24小时,一月份是31 ...
- iconv 批量修改文件编码
iconv_shell.sh #!/bin/bash "];then echo "Usage: `basename $0` dir filter" exit fi dir ...
- python抓取百度百科点赞数等动态数据
利用selenium 模拟浏览器打开页面,加载后抓取数据 #!/usr/bin/env python # coding=utf-8 import urllib2 import re from bs4 ...
- 使用python + tornado 做项目demo演示模板
很简单,可是却也折腾了不是时间,走了不少弯路.在此备注记录一下,以供后需. # web_server.py #!/usr/bin/env python # coding=utf-8 import os ...
- Move Zeroes
https://leetcode.com/problems/move-zeroes/ Given an array nums, write a function to move all 0's to ...
- android 插件化 模块化开发
http://blog.csdn.net/o1587790525/article/details/11891997 Android 插件化架构设计 http://www.iqiyi.com/w_19 ...
- java获取本机IP地址和MAC地址的方法
// 获取ip地址 public static String getIpAddress() { try { Enumeration<NetworkInterface> allNetInte ...
- struts (二)
1.运行流程 client --->tomcat ---> webapp -->web.xml --->filter -->struts.xml ---->na ...
- Django下载中文名文件:
Django下载中文名文件: from django.utils.http import urlquote from django.http import HttpResponse content = ...
- [SQL]reName存储过程
exec sp_helptext aa--应用sp_helptext查看存储过程的定义文本 exec sp_depends aa --通过sp_depends查看存储过程的相关性 exec sp_he ...