使用Micrisoft.net设计方案 第一章 企业解决方案中构建设计模式
第一章企业解决方案中构建设计模式
我们知道的系统总是由简单到复杂,而不是直接去设计一个复杂系统。如果直接去设计一个复杂系统,结果最终会导致失败。在设计系统的时候,先设计一个能够正常工作的系统,然后在此基础上逐步扩展。而一个好的企业设计方案就是由一些短小、简单、可靠、有效的并能够解决问题的机制组成。由这些短小精悍的机制进行组合,形成复杂的系统。而这些机制就设计模式。设计模式就是能够记录这些机制的一些描述。
企业级业务解决方案一般是复杂、性能要好、可扩展性好以及容易维护和可伸缩性强,而设计模式可以帮我们解决这些问题。
设计模式具有以下特性:
1、 记录正常工作的简单机制
2、 形成通用分类和词汇,方便开发人员和设计人员进行交流和沟通
3、 描述解决方案
4、 可以最大程度的重用
5、 获取经验丰富的开发人员的知识,并用目录的形式进行呈现
通常设计模式要解决的问题是在上下文中反复出现的问题,并根据具体情况给出指导性建议。
举例如下:
单件设计模式(Singleton)
上下文中出现的问题:某些类型的数据,在系统执行期间有且只能有一个实例,并且在全局范围内可以共享。
解决方法:通过控制类的实例生成方法,来控制实例的访问。
案例:
设计一个报价系统,其中有一个报价管理功能,其它报价功能与它协作的过程中,需要保持该报价管理功能实例的唯一性。
解决方法:设计一个QuoteManager类,让其构造函数私有化,在类内部自己生成实例并存储在静态变量中,供其它实例调用。
- Public class QuoteManager
- {
- Private static QuoteManager quoteManager=null;
- Private QuoteManager(){}
- Public static QuoteManager GetInstance()
- {
- //该设计适用于单线程应用程序
- if(quoteManager==null)
- {
- quoteManager=new QuoteManager();
- }
- return quoteManager;
- }
- }
模式与模式应用程序的区别:模式提供的是一个通用的解决方案,而模式程序是针对具体业务进行设计的解决方案。
层设计模式(Layer)
上下文:希望把一个大型复杂系统进行分解,方便管理复杂事物
解决方法:通过分层进行解决,把层作物高级抽象级别进行组织业务
分层原则:
1、 把相同级别的抽象元素集中在同一层
2、 层内保持高内聚,层间弱依赖
分层作用:
1、 在设计上,层间是通过类进行协作,把对源代码修改的影响限制在局部,而不是贯穿整个系统设计
2、 在运行期间,单个组件可以和其它组件进行通信,把这种影响限制在局部
3、 更大程序的提高重用性
传统分层模式结构如下:
三层分层模式结构如下:
三层服务模式结构如下:
案例:
比如设计一个报价系统,其结构为:
模式与模式应用程序的区别:模式提供的是一个通用的解决方案,而模式程序是针对具体业务进行设计的解决方案。
从上述可以看出其优化顺序为:
处理上述分层模式结构外,还有以下多种方式:
使用Micrisoft.net设计方案 第一章 企业解决方案中构建设计模式的更多相关文章
- 使用Micrisoft.net设计方案 第二章组织模式
第二章组织模式 模式不仅依赖于它所包含的更小模式,同时也依赖包含它的更大的模式.它是描述复杂软件的系统方法. 本章的目标是让我们了解以下问题: 1.如何标识模式与模式的关系 2.如何把模式组织成模式集 ...
- 第一章 企业项目开发--maven+springmvc+spring+mybatis+velocity整合
说明:本系列文章主要是对自己在一家大型互联网公司实习的过程中对所学知识的总结!参与的是实际中使用的上线项目. 代码的github地址:https://github.com/zhaojigang/ssm ...
- windows核心编程---第一章 谈谈windows中的错误处理机制
我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错.Bool类型标识true时为真,false时为假.其他类型根据需要可以定义成不同意义. Win ...
- 第一章:eclipse 中修改字体大小和编码格式
eclipse 中修改字体大小的步骤: 1. 在 eclipse 的工具栏中,找到 weindows 下面的 preferences 2. 在 preferences 的 输出 font ,在 Bas ...
- 第一章 用HTML5中的结构元素构建网站
1.当一个容器需要直接定义样式或通过脚本定义行为时,推荐使用div元素而非section元素. 2.section是需要标题的,而nav或aside没有标题也是可以的. 3.html5轮廓工具 htt ...
- 第一章 HTML+CSS(中)
4.域元素(form表单.textarea文本域.fieldset域集合.input使用) 案例 表单 用户名: 密码: 昵称: 你喜欢的水果有? 苹果 黄瓜 香蕉 请选择性别 男 女 请选择你要的网 ...
- [Python编程实战] 第一章 python的创建型设计模式1.1抽象工厂模式
注:关乎对象的创建方式的设计模式就是“创建型设计模式”(creational design pattern) 1.1 抽象工厂模式 “抽象工厂模式”(Abstract Factory Pattern) ...
- 【第一章】 第一个spring boot程序
环境: jdk:1.8.0_73 maven:3.3.9 spring-boot:1.2.5.RELEASE(在pom.xml中指定了) 注意:关于spring-boot的支持, 最少使用jdk7(j ...
- 第一章 第一个spring boot程序
环境: jdk:1.8.0_73 maven:3.3.9 spring-boot:1.2.5.RELEASE(在pom.xml中指定了) 注意:关于spring-boot的支持, 最少使用jdk7(j ...
随机推荐
- Java Web_过滤器
过滤器分类: Servlet2.5: request:用户直接访问页面时,Web容器将会调用过滤器. forward:目标资源是通过RequestDispatcher的forward访问时,该过滤器将 ...
- python核心编程中的对象值比较VS对象身份比较(转载)
转载地址: https://blog.csdn.net/Mluka/article/details/51076786 在python核心编程第四章中,P69在优化下面这段代码时提出了:对象值比较VS对 ...
- java操作Excel的poi 格式设置
格式设置 package com.java.poi; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi. ...
- 理解Linux CPU负载和 CPU使用率
CPU负载和 CPU使用率 这两个从一定程度上都可以反映一台机器的繁忙程度. cpu使用率反映的是当前cpu的繁忙程度,忽高忽低的原因在于占用cpu处理时间的进程可能处于io等待状态但却还未释放进入w ...
- NOIP2015 DAY2 T1跳石头
传送门 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块 ...
- vue 手机键盘把底部按钮顶上去
背景:在写提交订单页面时候,底部按钮当我点击输入留言信息的时候,底部提交订单按钮被输入法软键盘顶上去遮挡住了. h5 ios输入框与键盘 兼容性优化 实现原理:当页面高度发生变化的时候改变底部butt ...
- oracle启动停止命令
dba 连接 oracle(切到 oracle 用户) sqlplus /nolog conn / as sysdba 登录成功之后,关闭数据库服务 shutdown immediate 登录成功之后 ...
- elasticsearch 权威指南排序阅读笔记(六)
默认排序 默认查询是通过_source 准确性权重来排序 字段排序 { "query":{ "match":{ "productName": ...
- Internal Temporary Tables
8.4.4 How MySQL Uses Internal Temporary Tables 这是MySQL手册中的一节,尝试补充了一些解释.用的版本是MySQL5.6.15社区版 In some c ...
- ZOJ 1450
最小圆覆盖 #include <iostream> #include <algorithm> #include <cstdio> #include <cmat ...