第一章企业解决方案中构建设计模式

我们知道的系统总是由简单到复杂,而不是直接去设计一个复杂系统。如果直接去设计一个复杂系统,结果最终会导致失败。在设计系统的时候,先设计一个能够正常工作的系统,然后在此基础上逐步扩展。而一个好的企业设计方案就是由一些短小、简单、可靠、有效的并能够解决问题的机制组成。由这些短小精悍的机制进行组合,形成复杂的系统。而这些机制就设计模式。设计模式就是能够记录这些机制的一些描述。

企业级业务解决方案一般是复杂、性能要好、可扩展性好以及容易维护和可伸缩性强,而设计模式可以帮我们解决这些问题。

设计模式具有以下特性:

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设计方案 第一章 企业解决方案中构建设计模式的更多相关文章

  1. 使用Micrisoft.net设计方案 第二章组织模式

    第二章组织模式 模式不仅依赖于它所包含的更小模式,同时也依赖包含它的更大的模式.它是描述复杂软件的系统方法. 本章的目标是让我们了解以下问题: 1.如何标识模式与模式的关系 2.如何把模式组织成模式集 ...

  2. 第一章 企业项目开发--maven+springmvc+spring+mybatis+velocity整合

    说明:本系列文章主要是对自己在一家大型互联网公司实习的过程中对所学知识的总结!参与的是实际中使用的上线项目. 代码的github地址:https://github.com/zhaojigang/ssm ...

  3. windows核心编程---第一章 谈谈windows中的错误处理机制

        我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错.Bool类型标识true时为真,false时为假.其他类型根据需要可以定义成不同意义.       Win ...

  4. 第一章:eclipse 中修改字体大小和编码格式

    eclipse 中修改字体大小的步骤: 1. 在 eclipse 的工具栏中,找到 weindows 下面的 preferences 2. 在 preferences 的 输出 font ,在 Bas ...

  5. 第一章 用HTML5中的结构元素构建网站

    1.当一个容器需要直接定义样式或通过脚本定义行为时,推荐使用div元素而非section元素. 2.section是需要标题的,而nav或aside没有标题也是可以的. 3.html5轮廓工具 htt ...

  6. 第一章 HTML+CSS(中)

    4.域元素(form表单.textarea文本域.fieldset域集合.input使用) 案例 表单 用户名: 密码: 昵称: 你喜欢的水果有? 苹果 黄瓜 香蕉 请选择性别 男 女 请选择你要的网 ...

  7. [Python编程实战] 第一章 python的创建型设计模式1.1抽象工厂模式

    注:关乎对象的创建方式的设计模式就是“创建型设计模式”(creational design pattern) 1.1 抽象工厂模式 “抽象工厂模式”(Abstract Factory Pattern) ...

  8. 【第一章】 第一个spring boot程序

    环境: jdk:1.8.0_73 maven:3.3.9 spring-boot:1.2.5.RELEASE(在pom.xml中指定了) 注意:关于spring-boot的支持, 最少使用jdk7(j ...

  9. 第一章 第一个spring boot程序

    环境: jdk:1.8.0_73 maven:3.3.9 spring-boot:1.2.5.RELEASE(在pom.xml中指定了) 注意:关于spring-boot的支持, 最少使用jdk7(j ...

随机推荐

  1. Apex语言(四)选择(决策)结构

    1.选择结构 选择结构是当满足某个条件或不满足某个条件时,需要进行决策以控制执行的流程. 2.if语句 if语句由布尔表达式后跟一个或多个语句组成. [格式] if(条件表达式){ 语句: } [流程 ...

  2. 团体程序设计天梯赛-练习集-L1-038. 新世界

    L1-038. 新世界 这道超级简单的题目没有任何输入. 你只需要在第一行中输出程序员钦定名言“Hello World”,并且在第二行中输出更新版的“Hello New World”就可以了. #in ...

  3. 【转载】JSTL和EL的使用

    使用JSTL前的准备 想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar). JSTL标签库 在JSTL中分为以下五个标签 核心标签 格式化标签 SQL标签 ...

  4. for 循环的反汇编浅析

    for 循环 for 循环是使用频度最高的循环结构,我们通过 C 语言反汇编实例,来分析 for 循环结构在计算机底层的原理和构造.首先,我们编写一个简单的 for 循环: 为了方便观察,我们用十六进 ...

  5. Linux基础:find命令总结

    本文只总结一些常用的用法,更详细的说明见man find和 info find. find命令 find命令常用来查找文件或目录,可以根据给定的路径和表达式查找所需的文件或目录.该工具是由findut ...

  6. 彻底弄清楚session是什么?

    搬运自博主xueqinna的CSDN博客,根据自己的理解修改了部分内容,介意者请前往原博主博客看原文. 今天就来彻底的学一下session是个啥,作者罗列了几个要点:1.session 是啥?2.怎么 ...

  7. Java 实现线程安全的三种方式

    一个程序在运行起来的时候会转换成进程,通常含有多个线程. 通常情况下,一个进程中的比较耗时的操作(如长循环.文件上传下载.网络资源获取等),往往会采用多线程来解决. 比如显示生活中,银行取钱问题.火车 ...

  8. Linux命令及全称(部分)

    man: manual   意思是手册,可以用这个命令查询其他命令的用法. pwd:print working directory   显示当前工作路径. su:swith user  切换用户,切换 ...

  9. 轻量级本地数据库SQLite在WinRT的使用

    开发环境:Windows 8.1 开发工具:Visual Studio Express 2013 for Windows SQLite数据库介绍 1.SQLite是一款轻型的嵌入式数据库,使用C++开 ...

  10. hdu 1598 暴力+并查集

    #include<stdio.h> #include<stdlib.h> #define N 300 int pre[N]; int find(int u) { if(u!=p ...