当前位置: 首页 > news >正文

模式对象设计模式Java实现(三)Strut2教程-java教程

本篇文章是一篇关于模式对象的帖子

    门面模式(Facade Pattern)

    由于客户端要需调用多个统系才能成完一件业务作操,所以客户端要需感知多个子统系,并赖依这些子统系。门面(Facade)的作用就是合聚这些子统系,由门面对外供给接口,客户端只要需感知和赖依门面便可,无需再赖依其他子统系。

    门面模式的计划和现实都很单简,这里可以下载门面模式的Java现实版本。

    门面模式的UML类图如下:

    

    

    享元模式(Flyweight Pattern)

    享元模式是对象结构模式,它以同享的法方高效的支撑大批的细粒度对象。java.lang.String类就应用了享元模式,java.lang.String对象是不可变对象,一旦建创,将不会被改修,如果要需改修,那么会回返另外一个对象。但在JVM部内,应用了一个同享变量池同享java.lang.String对象,即在JVM部内,java.lang.String对象是同享的。享元模式分为单纯享元模式和复合享元模式。在单纯享元模式中,有所对象都是可以被同享的。复合享元模式即在单纯享元模式部内又是有合成模式加以复合,成形复合享元对象。以下是Java版本的上述两种模式现实的码代下载。

    单纯享元模式的UML类计划图如下:

    

    复合享元模式的UML类计划图如下:

    

    

    原型模式(Prototype Pattern)
原型模式是对象的建创模式,该模式可以通过责负原型对象的法方,建创出更多同型类的对象。Java语言直接支撑构建模式,java.lang.Object类面里已定义了clone()法方,通过该法方,可以copy出一个与前当对象样一模一的新对象。要需应用该特性的对象,继承标识接口Cloneable便可。涉及到clone法方,有太多的要需要主的方地,例如浅拷贝和深拷贝的题问,在本例的现实中,深拷贝是应用对象序列化的法方来现实的,而不是应用传统的递归调用clone法方的法方。

    原型模式的Java码代现实可以在这里下载。

    原型模式的UML类图如下:

    每日一道理
人的生命似洪水奔流,不遇着岛屿和暗礁,难以激起美丽的浪花。

    

    

    单例模式(Singleton Pattern)

    单例模式是对象的构建模式,单例模式确保全局(全部JVM)只有一个该对象的例实。体总说来,单例模式的现实非常单简,大致可以分为饿汉式和懒汉式。但这两种现实法方都有各种的题问,另外一种通过部内类持有对象例实的法方,将上述两种现实的点缺都规避掉了。

    单例模式的三种现实法方Java版本下载到这里。

    饿汉式单例模式UML类图:

    

    懒汉式单例模式UML类图:

    

    部内类持有对象例实的法方UML类图:

    

    

    策略模式(Strategy Pattern)

    策略模式是对象的为行模式,它将一组不同的算法封装在雷同接口的前面,从而使它们可以互相的替换。策略模式可以使算法在不影响客户端的情况下停止变更。

    策略模式的码代现实在这里可以下载。

    策略模式的UML类计划图:

    

    

    模板法方模式(Template Method Pattern)

    模板法方模式是对象的为行模式,其定义了算法的流程,但将算法中某些步调的详细现实较给子类来决议,不同的子类可以以不同的法方现实。

    模板法方模式的码代现实在这里可以下载。

    模板法方模式的UML类计划图:

    

文章结束给大家分享下程序员的一些笑话语录: 程序员喝酒
  我偶尔采用“木马策略”、“交叉测试”,时间不长就开始“频繁分配释放资源”,“cache”也是免不了的了,
  不过我从不搞“轮巡”,也不会“捕获异常”,更不会“程序异常”,因为我有理性
克制的。  

转载于:https://www.cnblogs.com/jiangu66/archive/2013/05/01/3053878.html

相关文章:

  • 解惑:学.Net还是学Java?
  • 关于python写文件时的回车符
  • MOSS 2013研究系列---不常用函数总结……
  • 添加图片如何点击a标签, 弹出input file 上传文件对话框
  • (TOJ2804)Even? Odd?
  • Smack文档(翻译)转
  • UML 中关系详解以及在visio中的表示
  • linux下查找文件的常用命令
  • struts2-自定义拦截器
  • 敌兵布阵
  • Mac系统如何显示和隐藏文件
  • 无法读取配置节system.web.extensions,因为它缺少节声明
  • 【语言处理与Python】3.3使用Unicode进行文字处理
  • Android应用程序组件Content Provider应用实例
  • 整数数组关于大整数包的设计!
  • [NodeJS] 关于Buffer
  • Cookie 在前端中的实践
  • iOS 颜色设置看我就够了
  • JavaScript 奇技淫巧
  • java第三方包学习之lombok
  • magento2项目上线注意事项
  • Python利用正则抓取网页内容保存到本地
  • React16时代,该用什么姿势写 React ?
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue-router的history模式发布配置
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 彻底搞懂浏览器Event-loop
  • 对JS继承的一点思考
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 说说动画卡顿的解决方案
  • 微信小程序:实现悬浮返回和分享按钮
  • 无服务器化是企业 IT 架构的未来吗?
  • 一起参Ember.js讨论、问答社区。
  •  一套莫尔斯电报听写、翻译系统
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #Ubuntu(修改root信息)
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (汇总)os模块以及shutil模块对文件的操作
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (图)IntelliTrace Tools 跟踪云端程序
  • (五)MySQL的备份及恢复
  • (原創) 未来三学期想要修的课 (日記)
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)scrum常见工具列表
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .h头文件 .lib动态链接库文件 .dll 动态链接库