框架模式和设计模式的区别

框架模式和设计模式的区别
有很多程序员往往把框架模式和设计模式混淆,认为MVC是一种设计模式。实际上它们完全是不同的概念。[7]
框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。
框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。
在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。
框架模式有哪些?MVC、MTV、MVP、CBD、ORM等等;
框架有哪些?C++语言的QT、MFC、gtk,Java语言的SSH,php语言的 smarty(MVC模式),python语言的django(MTV模式)等等
设计模式有哪些?工厂模式、适配器模式、策略模式等等
简而言之:框架模式是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率、降低耦合度。

转载于:https://www.cnblogs.com/whpepsi/archive/2013/04/09/3009771.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

netbeans搭建安卓开发环境

2019独角兽企业重金招聘Python工程师标准>>> NetBeans 上开发 Android 应用程序需要安装一个 Android SDK 和针对 NetBeans 的 Android 开发插件 下载并安装 Android SDK 下载 Android SDK 解压后运行 tools\android.bat update sdk 进行升级,根据所选内…

Linux设备驱动模型4——基于平台总线的LED驱动实践

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考博客 platform总线驱动代码分析 平台设备与平台驱动的注册_天糊土的博客-CSDN博客 一、有driver无device 本节把之前的LED驱动源码改写成平台总线制式,先实现platform_driver。 1、…

StringIO类的用途

import StringIO as SIOs1 "Hello" print id(s1) s2 "Hello" s1 print id(s2) sp SIO.StringIO() sp.write("Hello") print sp.getvalue() print id(sp) sp.write("Leon") print sp.getvalue() print id(sp) exit() 主要进行字符串…

VS2010皮肤控件介绍

在我们平时使用的各种工具中,如QQ,迅雷,以及各种空间等,都提供了一些换肤功能,可以让我们选择各种我们喜欢的界面。本文就对VS中常用的窗口程序做一个简单的换肤,利用一个dll文件来进行实现。 首先我们要加…

mimemultipart java_最佳实践 – 发送javamail mime multipart电子邮件和gmail

我有一个Tomcat应用程序需要发送确认电子邮件等。我已经用Javamail(mail.jar)编写了电子邮件发送多部分文本/ HTML电子邮件。我基于Java EE示例的代码。我在本地服务器上使用SMTP MTA。它的作品很棒在Outlook中,我看到了HTML版本。如果我将其拖动到Outlook垃圾邮件文…

framebuffer驱动详解0——framebuffer的简介

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、framebuffer的简介 1、framebuffer的含义 framebuffer的中文意思是“帧缓冲”,简称fb。 2、fb是虚拟的字符设备 fb是内核虚拟的一个字符设备,即它是用代码构建出来的&…

Linux下Chromium使用flash的办法

环境说明:系统: CentOS 6.5 X64很简单,主要原因是在启动Chromium的时候指定了自有的Flash,我们可以在启动参数上去除指定的Flash!sudo vim /usr/bin/chromium-browserCHROMIUM_RHEL_FLAGS"--enable-plugins --enable-extensions --ena…

ie7浏览器传输中文的问题

调用jquery的$.get()(此方法应该的对字符串进行了编码)向服务器发送中文字符串时 ie7浏览器会在后面加一个空格(服务器接收时还应该进行解码encode("utf-8").strip()再去空格)转载于:https://www.cnblogs.com/aveenzhou/archive/2013/04/09/30…

MySQL和Mariadb都启动不了了_linux centos7mariadb安装成功启动不了 解决思路

查看系统日志/var/log/mariadb/mariadb.log190313 14:31:03 InnoDB: Database was not shut down normally!InnoDB: Starting crash recovery.InnoDB: Reading tablespace information from the .ibd files...InnoDB: Restoring possible half-written data pages from the dou…

framebuffer驱动详解1——应用层编程实践

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、步骤总结 步骤1:打开设备文件 步骤2:获取设备信息 步骤3:mmap函数做映射 步骤4:填充framebuffer 二、步骤分析 1、打开设备文件 设备文件为/dev…

(转)API SOCKET基础(一) TCP建立连接并通信

写这篇日志,并不是要记录令人眼前一亮的算法,只是为了本人健忘的脑袋做一点准备。 要进行网络通信编程,就要用到socket(套接字),下面以TCP为例展示如何利用socket通信。 要 进行socket编程,首先…

5shift shell

echo offcopy %systemroot%\system32\taskmgr.exe %systemroot%\system32\sethc.execopy %systemroot%\system32\taskmgr.exe %systemroot%\system32\dllcache\sethc.exepause转载于:https://www.cnblogs.com/upshania/p/3817258.html

java 线程转储_获取Java线程转储的常用方法(推荐)

1. 线程转储简介线程转储(Thread Dump)就是JVM中所有线程状态信息的一次快照。线程转储一般使用文本格式, 可以将其保存到文本文件中, 然后人工查看和分析, 或者使用工具/API自动分析。Java中的线程模型, 直接使用了操作系统的线程调度模型, 只进行简单的封装。线程调用栈, 也称…

framebuffer驱动详解2——fb驱动框架分析(核心层)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、前言 framebuffer驱动框架包括以下两部分: 1、内核开发者实现的部分(核心层) rootubuntu:省略部分路径/x210_kernel/drivers/video# ls *.o built-in.o …

Oracle conn 协议适配器错误解决

Oracle conn 协议适配器错误 --解决方法C:\Documents and Settings\administrator>set oracle_sidmyoracleC:\Documents and Settings\administrator>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期三 12月 26 09:47:16 2012Copyright (c) 1982, 2005…

jquery ajax 文本丢失加号和连接号的问题

因为采用data:字符串这种形式,和&是jquery分隔参数的分隔符,所以会丢失,解决方法就是把text文本中的和&替换掉,用js里面的encodeURIComponent编码,为了省事,直接写出编码替换.. function FixJqText…

python给定一个整数n、判断n是否为素数_输入一个大于3的整数n,判断它是否为素数...

#include //让n被i除(i的值从2到n-1)int main(){int n,i;printf("please enter a integer number,n?");scanf("%d",&n);for(i2;i<n-1;i)if(n%i0) break;if(i",n);else printf("%d is a prime number.",n);return 0;}**************…

kernel移植——修改内核的启动logo

以下内容源于朱有鹏嵌入式课程的学习&#xff0c;如有侵权请告知删除。 参考博客 http://blog.csdn.net/ultraman_hs/article/details/54988168 一、自定义内核启动logo 步骤一&#xff1a;安装工具包 在命令行中输入以下内容 sudo apt-get install netpbm 步骤二&#xff1a;…

编译Ngnix遇到的问题,查看程序依赖的库文件

要点:ldd 可以读取每个可以运行的程序依赖的 so 文件。 编译的时候提示需要Openssl库. 查看本机,已经安装了openssl 查看编译报错文件,查找Openssl所依赖的库 more objs/autoconf.err 查看openssl所依赖的库文件 ldd /usr/bin/openssl ldd –u /usr/bin/openssl objdump -x ob…

[JavaWeb修行之路 Day1] 安装、配置、部署Tomcat

一、相关软件下载 Tomcat下载地址&#xff1a;http://tomcat.apache.org 。选择Tomcat 6或者Tomcat 7。Eclipse下载地址&#xff1a;http://www.eclipse.org/downloads/ 。选择Eclipse IDE for Java EE Developers进行下载。当然&#xff0c;也可以使用MyEclipse&#xff0c;收…