在这里23种经典设计模式UML类图汇总       创建型模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了.麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开.消费者任何时候需要某种产品,只需向工厂请求即可.消费者无须修改就可以接纳新产品.缺点是当产品修改时,工厂类也要做相应的修改.如:如何创建及如何向客户端提供. 2.BUILDER—MM最爱听…
北风设计模式课程---20.UML类图介绍 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 设计模式都是对生活的抽象,比如用户获得装备,我可以先装备工厂先生产出来装备,然后给宗门武器库,宗门武器库发给我,如果是打怪获得的装备,可以是装备工厂把装备给的怪物装备库 1.uml软件中有常见的23种设计模式么? 有的:需要的时候直接导入使用即可 2.使用starUML画java的uml图前要做的操作是什么? 引入java的profile:点Model->Pro…
原文:设计模式之前奏(UML类图) 本人菜菜一个,最近一直在博客园游走闲逛,看到了各种技术,各种各种…….便看到了大话设计模式这本书,下了电子版的看了看第一章,感觉相当不错,不仅通俗易懂,而且与实际案例相结合,可就是电子版的,鄙人很少看小说,所以立马在京东下单买了本.就是给力…… 看了看书,翻了翻,第一章简单工厂模式最后讲解的是UML类图,以前见到过,但从来没画过,也就是一眼而过.但是又好好看了看书,后面几乎每种模式都会用UML类图来阐述设计模式的整体架构.所以就回过头来好好把第一章最后的UML…
Java开发设计——UML类图 摘要:本文主要介绍了UML类图的相关知识. 简介 在UML中,类使用包含类名.属性和操作且带有分隔线的长方形来表示,类图分为三层. 第一层是类的名称,如果是抽象类或接口,就用斜体表示,其中接口名称的上部会用<<interface>>修饰. 第二层是类的成员变量,通常是字段和属性.表示方式为: 可见性 名称:类型 [ = 缺省值 ] . 第三层是类的成员方法.表示方式为: 可见性 名称(参数列表) [ : 返回类型] . 类的成员变量和成员方法的修饰符…
设计模式之序-UML类图那点事儿 序 打14年年底就像写那么一个系列,用于讲设计模式的,代码基于JAVA语言,最早接触设计模式是大一还是大二来着,那时候网上有人给推荐书,其中就有设计模式,当时给我推荐的书我还隐约记得,叫GoF的,书名是<Design Patterns: Elements of Reusable Object-Oriented Software>,也即<设计模式>,机械出版社的将其翻译为<设计模式-可复用面向对象软件的基础>.至于为什么叫做GoF,那时候…
阅读推荐:设计模式-简单篇 项目地址:https://gitee.com/zwtgit/gof23 学习网站推荐: https://refactoringguru.cn/design-patterns/catalog https://www.journaldev.com/1827/java-design-patterns-example-tutorial 设计模式是针对软件设计中常见问题的工具箱, 其中的工具就是各种经过实践验证的解决方案. 即使你从未遇到过这些问题, 了解模式仍然非常有用, 因…
前言 其实吧,最早接触UML是源于软件设计师的考试,半路出家实在难为我了.学设计模式总是要画类图的,所以补充UML的类图的知识是很重要滴.第一篇就偷懒一点copy别人的东西了.实话说,我们都是踩在巨人们的肩膀上继续学习,而且在这条道路上,有多少人走过啊.所以不是成功太难,而是坚持太难.有好的东西,就拿来一起分享,我不排斥别人的东西,但是给个链接还是要的.我们一起copy一起总结. 正文 在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realiz…
1 内容简析(易错加粗) 2 uml类图展示 1 内容简析(易错加粗) 1.1 设计模式中的对象关系 依赖关系 虚线箭头 组合关系 实心菱形 聚合关系 空心菱形(想象成盘子,盛东西,盘子的多,另一方少) 关联关系 实线  类与类的连接,(它使一个类知道另一个类的属性和方法,关联关系一般用成员变量实现) 继承 空心三角形实线 实现 空心三角形虚线 1.2 其他需要注意的地方 实现接口有两种方式,一种是棒棒糖的形式,另一种是虚线空心三角形的方式 2 uml类图展示…
一.类中的主要关系 继承.实现.组合.聚合.依赖.关联 二.UML类图 三.代码实现 public class H2O { } public class O2 { } public interface Animal { public boolean life=false;//是否有生命 public void eat(H2O h2o,O2 o2);//水和氧气 --依赖 } public class Dog implements Animal { //--实现 @Override public…
1 类图讲解 1 类图讲解 + 公共方法 - private权限 # protected权限 包内和包外继承的子类都能引用 ~ default权限(包权限)只有包内能引用 下划线   静态 Static 斜体   抽象类(或抽象方法)(包含抽象方法的必是抽象类)(类和至少一个方法都是斜体) 方法   可以带参,可以不带参   返回值写到冒号后边,void不用加 注意:下图类名应该为斜体,因为有抽象方法study(),所以GeelyClass为抽象类,应该为斜体.…
 在软件工程中,通过都是先了详细设计,然后按照详细设计来进行开发.在编写详细设计的时候,通常都会画一些类图.时序图.流程图等等UML设计,然后通过uml类图生成代码,这个属于正向工程生成代码,然而在实际开发中,很可能是先完成了代码开发,再来补充一大堆的文档,这是就需要通过代码来生成类图,这个就属于逆向工程了,下面进入主题,如何利用staruml通过java代码生成类图. 下载安装staruml,安装过程没有什么特别的就不介绍了,下一步下一步点下去就OK了 要使用Java代码生成类图或者类图生成J…
1.进入RetionalRose选择J2EE模板 2.在菜单栏选择tools->java/j2EE->reverse engineer 3.编辑路径Edit CLASSPATH选择要生成类图的Java项目src文件 4.点击含有java源文件的文件夹,再点击Add Recursive按钮 5.先点击selectAll再点击Reverse 6.点击Done完成,java工程代码中描绘的类都已出现在左侧的LogicalView中,可以新建类图后拖拽将其显示出来…
Abstract Factory Intent: Provide an interface for creating families of related or dependent objects without specifying their concrete classes. Applicability: Use the Abstract Factory pattern when a system should be independent of how its products are…
创建型模式 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说"来四个鸡翅"就行了.麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开.消费者任何时候需要某种产品,只需向工厂请求即可.消费者无须修改就可以接纳新产品.缺点是当产品修改时,工厂类也要做相应的修改.如:如何创建及如何向客户端提供. 2.BUILDER-MM最爱听的就是"我爱你"这句话…
·结构型模式: o适配器:用来把一个接口转化成另一个接口,如 java.util.Arrays#asList(). o桥接模式:这个模式将抽象和抽象操作的实现进行了解耦,这样使得抽象和实现可以独立地变化,如JDBC: o组合模式:使得客户端看来单个对象和对象的组合是同等的.换句话说,某个类型的方法同时也接受自身类型作为参数,如 Map.putAll,List.addAll.Set.addAll. o装饰者模式:动态的给一个对象附加额外的功能,这也是子类的一种替代方式,如 java.util.Co…
1 主要内容 1.1 关联和依赖的对比 1.2 组合和聚合的对比 1.3 继承和实现的对比 1.4 各种关系代码实现demo 1 主要内容 1.1 关联和依赖的对比 关联是a类中存在b类对象,企鹅类中有气候类的属性 依赖是a类成员方法中有b类的属性,动物新陈代谢方法中有水和空气的属性,只有调这个方法的时候,才可能临时用一下 1.2 组合和聚合的对比 组合有相同的生命周期,鸟有翅膀,鸟死了,翅膀不复存在 大雁群有大雁,一直大雁挂了,大雁群不会消失 1.3 继承和实现的对比 实线:继承 虚线:实现…
InfluxDB工具类 package com.influxdb.test; import java.util.Map; import org.influxdb.InfluxDB; import org.influxdb.InfluxDBFactory; import org.influxdb.dto.Point; import org.influxdb.dto.Point.Builder; import org.influxdb.dto.Query; import org.influxdb.d…
package com.rick.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache…
package com.rick.utils; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse…
邻接矩阵实现图,是用一个矩阵,把矩阵下标作为一个顶点,如果顶点与顶点之间有边.那么在矩阵对应的点上把值设为 1 .(默认是0) package mygraph; import java.util.List; /** * 邻接矩阵表示图 * @author Ranter * */ public class Vertex { private char lable; //矩阵元素 private int[][] list = new int[20][20]; private char[] vertex…
package com.rick.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * ------------------------------------------- * Title : MD5Util * Description : MD5加密算法 * Create on : 2017年4月5日 上午9:53:42 * Copyright (C) s…
/** * RSA算法加密/解密工具类 */ public class RSAUtils { private static final Logger LOGGER = LoggerFactory.getLogger(RSAUtils.class); /** 算法名称 */ private static final String ALGORITHM = "RSA"; /** 默认密钥大小 */ private static final int KEY_SIZE = 1024; /** 用…
/** * 01 * 描述:求int数组中最大值 * [时间 2019年3月5日下午3:21:36 作者 陶攀峰] */ public static int test01(int[]sz) { int max = sz[0]; for(int x=1; x<sz.length; x++) { if(sz[x]>max){ max = sz[x]; } } return max; } 1描述:求int数组中最大值 /** * 02 * 描述:数组排序(从小到大)~传入int数组 .返回int数组…
/** * 01 * 描述:String的substring和replace方法使用 * [时间 2019年3月5日下午3:22:08 作者 陶攀峰] */ public static void test01() { String src = new String("aabbccdd11223344"); System.out.println(src.substring(0, 4));//aabb 从0开始 取前不取后 System.out.println(src.replace(&q…
用MyEclipse将java文件转换成UML类图 参考: 用MyEclipse将java文件转换成UML类图 - 君临天下的博客 - CSDN博客  http://blog.csdn.net/dan15188387481/article/details/50053807 MyEclipse画UML用例图并生成JAVA代码(图文详细步骤) - 蘑菇猎手的专栏 - CSDN博客  http://blog.csdn.net/donggege214/article/details/48791413  …
一个程序员对设计模式的理解: "不懂"为什么要把很简单的东西搞得那么复杂. 后来随着软件开发经验的增加才开始明白我所看到的"复杂"恰恰就是设计模式的精髓所在,我所理解的"简单"就是一把钥匙开一把锁的模式, 目的仅仅是着眼于解决现在的问题,而设计模式的"复杂"就在于它是要构造一个"万能钥匙",目的是提出一种对所有锁的开锁方案. 在真正理解设计模式之前我一直在编写"简单"的代码.这个&quo…
设计模式:一个程序员对设计模式的理解:“不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂”就在于它是要构造一个“万能钥匙”,目的是提出一种对所有锁的开锁方案.在真正理解设计模式之前我一直在编写“简单”的代码.这个“简单”不是功能的简单,而是设计的简单.简单的设计意味着缺少灵活性,代码很钢硬,只在这个项目里有用,拿到其它的项目中…
设计模式:一个程序员对设计模式的理解:“不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂”就在于它是要构造一个“万能钥匙”,目的是提出一种对所有锁的开锁方案.在真正理解设计模式之前我一直在编写“简单”的代码.这个“简单”不是功能的简单,而是设计的简单.简单的设计意味着缺少灵活性,代码很钢硬,只在这个项目里有用,拿到其它的项目中…
设计模式: 一个程序员对设计模式的理解: “不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂”就在于它是要构造一个“万能钥匙”,目的是提出一种对所有锁的开锁方案.在真正理解设计模式之前我一直在编写“简单”的代码. 这个“简单”不是功能的简单,而是设计的简单.简单的设计意味着缺少灵活性,代码很钢硬,只在这个项目里有用,拿到其它的…
1. 面向对象设计原则 单一职责原则: 一个类只负责一个功能领域中的相应职责 开闭原则: 软件实体应对扩展开放,而对修改关闭; 里氏代换原则: 所有引用基类对象的地方能够透明地使用其子类的对象; 依赖倒转原则: 抽象不应该依赖于细节,细节应该依赖于抽象; 接口隔离原则: 使用多个专门的接口,而不使用单一的总接口; 合成复用原则: 尽量使用对象组合,而不是继承来达到复用的目的; 迪米特法则: 一个软件实体应当尽可能少地与其他实体发生相互作用; 2. 软件模式的基础结构包括四部分: 问题描述(待解决…