1.简单工厂:隐藏了对象之间用new来生成实例,通过一个工厂来得到对应的实例。如service层调用dao层。
2.单例模式:在java虑拟机里面只允许一个对象生成一个实例。如计算机的端口号、太阳、指纹
3.策略模式:为了完成一系列的算法,把这些算法封装成一个独的类。这样方便多个算法之间的切换。如我去超市购物,结账的时候我可以选择用现金,也可以用银行卡。
4.模板模式:就是父类定义流程子类去实现,如父类定义一组数据,子类去把这组数据排好,可以有冒泡、插入、希尔等。
5.观察者模式:对象间的一种一对多的依赖关系,一个对象改变了,所有依赖于他的对象接到通知也要全部改变。如:火车站的大屏幕。 做的网上图书系统、
6.组合模式:就是以树的形型表达出来,以达到“部分—整体”关系。
如:我们公司做项目,出色的完成的之后加薪。
7.命令模式:将一个请求封装成一个对象,只关心行为,而不必要知道里面具体的实现。
如:我做过的自动取款机ATM系统,
8.外观模式:为所有的子系统提供一个一致的界面。如泡茶,
9.装饰器模式:动态的给一个对象添加一些额外的功能,解决了一个对象经常动态增加属性或职责。
如:我以前写的一个网上购物管理系统:
10.状态模式:当一个对象的内在状态改变的时候允许将其行为改变。
如:我做的spg2800系统,他的告警
11.职责链模式:避免了请求的发送者与接收者之间的耦合
如:工厂里的生产线
12.抽象工厂:提供一个创建一系列相关或相互依赖的关系。
如:诺基亚生产商5800,E71、N97等。
13.适配器模式:将一个类换成客户期望的另外一个接口
如:手机充电器
14.建造模式:将一个复杂对象的构建与他的表示相分离。
例子:我们将产品与最终的工厂分离开来了,也就是说,他通过另一个类去得到他的真正的实例。
15.代理模式:为其他对象提拱一种代理控制对这个对象的访问。
例子:网上购物的时候,送货
16.中介模式:用一个中介对象封装一系列的对象交互。
例子:MVC中的控制层就是一个中介对象。
生产者与消费者。
下面讲一下我做的一个spg2800项目吧:
它是华为IMS解决方案内统一的业务发放网关,为IMS解决方案的各业务网元提供一个统一的业务发放接口和web protal。
IMS是一种网络结构,中文定义为多媒体子系统。
命令模式:用户只要发送一条命令就可以了,用户并不需要知道它里面的流程是怎么实现的。
当然用户不知道这个流程,我还是知道一些的,当用户发送请求的时候,它是怎么处理这个请求的呢。
其实在处理请求的时候不止这一种处理方法,它可以通过spg来处理,也可以不通过spg而自己进行处理然后与南向接口相连。这里就用到了抽象工厂模式。就是为了提供一个创建一系列相关的或相互依赖的对象接口,而无须定它们的具体类。我们这里使用抽象工厂就可以达到我们的目的了。
而我们要做的就是使用它通过spg2800来处理这个请求。
这里处理请求就用到了职责链模式,请求会通过Boss端与北向接口相连接,然后进入到spg系统,它会自动的为该用户填写一张表单,然后验证这张表单,然后再能过南向接口与网元(ATS、HSS、BMS)等进行相连接,处理之后再返回去。
在这里我讲一下南向接口是怎么与网元相连接的吧:这里主要是用到了南向接口与ATS进行连接的,ATS里面提供了一个WSDL的文件,我们要使用南向接口与这个文件相连接的话就得使用一个中间对象了,也就是说使用适配器。我们可以使用适配器来把二个不相同的对象连接到一起去,这样就解决了南向接口与网元之间的不兼容的问题。其它的那些网元连接也是差不多的。
然而这里在处理表单的时候就用到了单例模式,因为在同一时刻内只能对一张表单进么处理,如果有多张表单的话那么将有可能出现混乱,所以要用单例模式来解决这一问题。
当然我们的这个产品是买给用户用的,但是买给用户的是用期限的,那么就会有不同的状态了,下面就讲一下它的状态是怎么实现的吧?状态之间的切换是通过状态模式来控制的,如果在这有效期限间的话,该产品在运用的时候肯定是没有问题的,但是如果已经过了有效期的话就不能运行了,如果你再运行的话它就会发出告警,提示你这个系统现再已经不能运用了。如果你想继续使用,就得到再次的把它激活,那就意味着再交一些费用了,当然你也可以亲自到我们公司来交这笔费用,也可以通过银行卡进行转账,而最终的目地就是你的这个产品又可以运行了。这里就是用到了策略模式来实现的。用户可以自己选择怎样去完成交这笔费用,这二者之间是可以相互替换的。
我们的项目中使用到的敏捷开发,结对、重构、单元测试、功能测试、系统测试、TDD等。
在这里我主要写的是一些单元测试,遇到了一些问题,所以也比较荣幸的去接触了一下Junit源码了,虽然它的源码比之spring、hibnate来说比较简单,但是也有很多值得关注的地方,因为它的作者是由gof的四人帮中的一个,所以也用到了几种模式,命令模式、模板模式、观察者模式、组合模式。也是一个短小精悍、非常完美的一个框架了。
流程:
简单工厂、门面模式、装饰模式、建造模式、代理、中介
简单工厂:减少对象之间的耦合,对象之间的调用隐藏起来了。
如service层调用dao层的实例就是能过简单工厂来实例的。
装饰模式:就是动态的给一个对象增加一些额外的功能。
解决:一个对象经常动态的增加一些属性或职业。
例子:我以前做的一个网上购物系统,如果现再有一款新的产品过来了,我们只要动态的把这个产品加进去就可以了,不需要改动它内部的其它源代码。如果有一类产品没有了,我们也只需要动态的把它取掉就可以了,也不需要改变它的内部源代码。这就体现出了开关原则,对外扩展是开放的,对内修改是关闭的。
门面模式:就是为子系统的一组接口提拱一个一致的门面。
解决:子接口繁多的问题。
例子:如一个大型公司的老板来视查情况,他要知道最近公司的一些情况,他会不会每个员工每个员工的去问啊,肯定不会,如果该公司有上万个员工的话,那这个老板不累死才怪。
所以这时候就会有一个专门的管理人员,它就负责管理所有的公司情况。老板只需要到这个管理人员那里去问一下情况就可以了。
建造模式:将一个复杂对象的构建与他的表示相分离。
如手机生产商,如果要生产一批手机,手机有很多的零件,如屏幕、按键、外壳等。当然如果要造出一部完整的手机的话,那么就要提供一个装配的类,把这些零件组合起来,成为一部手机了。所以生产商要出售手机的话就从这个装配的类里面拿手机就可以了。这样生产商就不需要与每个零件打交道了。
代理模式:为其他对象提供一种代理以控制对这个对象的访问。
特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。
静态代理类:由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前代理类的.class文件就已经存在了。动态代理类:在程序运行时,运用反射机制动态创建而成。
例子:如一个网上购物系统,你如果在这里买了东西付了钱,他就会给你东西。会是老板自己来送给你吗,不是,他会通过一个代理然后再把东西交到你的手上。
中介模式:用一个中介对象来封装一系列的对象交互。
MVC中的控制层就好比一个中介的作用。
生产者与消费者。
分享到:
相关推荐
超级棒的设计模式手册啊,里面分类齐全,各种设计模式的用法场合,都在同一页上,设计模式分类,创建型,行为型都分的很好,类图非常详细。绝对是好东西!
总之,通过结合Visual Studio 2008的开发环境、面向对象编程和设计模式,我们可以构建出一个功能齐全且易于维护的计算器应用。软帝计算器项目很可能是这个思路的一个实例,通过对源码的分析,我们可以学习到如何将...
最重要是使用设计模式,决不是随随便便的学生作品。 第一.需求。实现人机对战,首先要解决电脑智能问题,即能让电脑识别棋盘,并做出相应的策略,比如防守或进攻。还要识别是否禁手。 第二.基本技术。功能部分实现的...
资源分为5部分 下载齐全后 才能够打开
资源分为5部分 全部下载齐全后 才能打开
这个资源分为5部分 下载齐全后才能够打开
《网上售书系统设计-齐全》数据库课程设计报告详述了设计一个网上售书系统所需的数据库架构和E-R图,遵循了完整的数据库设计流程。在本文中,我们将深入探讨数据库设计的基本步骤,以及E-R图在其中的重要作用。 ...
高分项目 基于STM32单片机的DCM模式下的BUCK变换器设计源代码+项目资料齐全+教程文档.zip高分项目 基于STM32单片机的DCM模式下的BUCK变换器设计源代码+项目资料齐全+教程文档.zip高分项目 基于STM32单片机的DCM模式...
【描述】中提到“功能很齐全的计算器,界面舒服完善”,这表明该计算器应用程序可能具备多种计算模式,例如科学计算模式,能够处理复数、百分比、阶乘等特殊计算。界面设计注重用户体验,按钮布局合理,字体清晰,...
(1)该系统的用户分为教师和学生。教师的功能有:管理某一学生或课程的信息以及成绩,包括增...2.功能齐全,只有你想不到的,没有我们做不到的; 3.页面整体设计上应尽量美观大方; 4.操作上能够根据需求进退自如。
【描述】"功能齐全,思路严谨,易学易懂的网上商城项目"表明了该商城系统不仅拥有全面的业务功能,如商品浏览、购物车、订单处理、支付接口集成等,还注重代码结构和设计模式的合理性。其严谨的思路体现在系统架构的...
Java 是面向对象的编程语言,对象就是面向对象程序设计的核心。其基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序...JDK是(Java Development Kit)的缩写,它是功能齐全的 Java SDK。它拥有 JRE 所拥
其次,MVC模式是一种软件设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。在学生管理系统中: 1. 模型(Model):包含业务对象和数据,如Student类,存储学生的姓名、...
该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:Vue/JSP/React/HTML+JS+CSS/ASP 后台框架代码:java/c/c++/...
这个项目旨在帮助学习者深入理解软件工程的各个环节,并掌握MVC(Model-View-Controller)设计模式的运用。 **需求分析** 需求分析是软件开发的第一步,它涉及到明确系统的目标用户、功能需求和非功能需求。在这个...
标题中的“QR码生成器(不同模式,功能齐全)”指的是一个软件工具,它提供了多种生成QR码的功能和模式。这样的生成器通常具备以下特性: 1. **不同模式**:QR码有多种模式,如数字模式、字母模式、二进制模式、...
1. **数据结构与设计模式**:通讯录的核心是存储联系人信息的数据结构。可以使用ArrayList、LinkedList或者自定义的Contact类来实现。设计模式如单例模式(用于确保通讯录实例的唯一性)和工厂模式(用于创建Contact...
DHTML 手册.chm,java 1.6 api.chm,JAVA设计模式.chm,oracle_sql.chm,spring2.0-reference_final_zh_cn.chm,Spring+in+Action中文版.chm,全新java基础实践教程.chm 本人QQ:464344269 资料狠齐全 超值 超值 !!
本资源包包含了一个完整的JavaEE开发的动漫论坛项目,涵盖了SSH(Spring、Struts、Hibernate)框架、MVC设计模式以及MySQL数据库的应用。这个项目不仅提供了源代码,还有数据库SQL脚本、相关论文以及辅助学习的视频...