首页 技术 正文
技术 2022年11月10日
0 收藏 538 点赞 2,987 浏览 1236 个字

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

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

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

设计模式具有以下特性:

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

三层服务模式结构如下:

使用Micrisoft.net设计方案 第一章 企业解决方案中构建设计模式

案例:

比如设计一个报价系统,其结构为:

使用Micrisoft.net设计方案 第一章 企业解决方案中构建设计模式

模式与模式应用程序的区别:模式提供的是一个通用的解决方案,而模式程序是针对具体业务进行设计的解决方案。

从上述可以看出其优化顺序为:

使用Micrisoft.net设计方案 第一章 企业解决方案中构建设计模式

处理上述分层模式结构外,还有以下多种方式:

使用Micrisoft.net设计方案 第一章 企业解决方案中构建设计模式

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,297