随笔 - 1162  文章 - 0  评论 - 16  阅读 - 59万 
01 2021 档案
第四节:享元模式——总结
摘要:享元模式的注意事项和细节 1、在享元模式这样理解,“享” 就表示共享,“元”表示对象; 2、系统中有大量对象,这些对象消耗大量内存,并且对象的状态大部分可以外部化时,我们就可以考虑选用享元模型; 3、用唯一标识码判断,如果在内存中有,则返回这个唯一标识码所标识的对象,用 HashMap/HashTa 阅读全文
posted @ 2021-01-31 17:11 格物致知_Tony 阅读(86) 评论(0) 推荐(0) 编辑
第三节:享元模式——源码分析
摘要:一、享元模式在 JDK-Integer的应用源码分析 1、Integer 中的享元模式 2、代码分析 先来看下面一个案例: 1 public class FlyWeight { 2 public static void main(String[] args) { 3 4 // 如果 Integer. 阅读全文
posted @ 2021-01-31 17:09 格物致知_Tony 阅读(108) 评论(0) 推荐(0) 编辑
第二节:享元模式——基本介绍&应用
摘要:一、享元模式基本介绍 1、基本介绍 (1)享元模式(FlyWeight Pattern)也叫 蝇量模式:运用共享技术有效地支持大量细粒度的对象; (2)常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿过来用,避免重新创建,如果没有 阅读全文
posted @ 2021-01-31 16:53 格物致知_Tony 阅读(222) 评论(0) 推荐(0) 编辑
第一节:享元模式——需求说明
摘要:一、展示网站项目需求 小型的外包项目,给客户 A 做一个产品展示网站,客户 A 的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同: (1)有客户要以新闻的形式发布; (2)有客户人要求以博客的形式发布; (3)有客户希望以微信公众号的形式发布; 二、传统方式解决网站展现项目 (1) 阅读全文
posted @ 2021-01-31 15:26 格物致知_Tony 阅读(68) 评论(0) 推荐(0) 编辑
第四节:外观模式—总结
摘要:一、外观模式的注意事项和细节 1、外观模式对外屏蔽了子系统的细节,因此外观模式降低了客户端对子系统使用的复杂性; 2、外观模式对客户端与子系统的耦合关系——解耦,让子系统内部的模块更易维护和扩展; 3、通过合理的使用外观模式,可以帮我们更好的划分访问的层次; 4、当系统需要进行分层设计时,可以考虑使 阅读全文
posted @ 2021-01-28 22:28 格物致知_Tony 阅读(70) 评论(0) 推荐(0) 编辑
第三节:外观模式在 MyBatis 框架应用
摘要:一、外观模式在 MyBatis 框架应用的源码分析 1、MyBatis 中的 Configuration 去创建 MetaObject 对象使用到外观模式 2、代码分析 3、对源码中使用到的外观模式的角色类图 阅读全文
posted @ 2021-01-28 22:08 格物致知_Tony 阅读(124) 评论(0) 推荐(0) 编辑
第二节:外观模式应用
摘要:一、传统方式解决影院管理说明 1、外观模式可以理解为转换一群接口,客户只要调用一个接口,而不用调用多个接口才能达到目的。比如:在 PC 删安装软件软件的时候经常有一键安装选项(省去选择安装目录、安装的组件等),还有就是手机的重启功能(把关机和启动合为一个操作)。 2、外观模式就是解决多个复杂接口带来 阅读全文
posted @ 2021-01-27 22:39 格物致知_Tony 阅读(194) 评论(0) 推荐(0) 编辑
第一节:外观模式——需求说明&基本介绍
摘要:一、需求说明 组建一个家庭影院: DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为: 直接用遥控器:统筹各设备开关 ① 开爆米花机; ② 放下屏幕; ③ 开投影仪; ④ 开音响; ⑤ 开 DVD,选 dvd; ⑥ 去拿爆米花; ⑦ 调暗灯光; ⑧ 播放; 阅读全文
posted @ 2021-01-26 22:33 格物致知_Tony 阅读(114) 评论(0) 推荐(0) 编辑
第四节:组合模式—总结
摘要:一、组合模式的注意事项和细节 1、简化客户端操作。客户端只需要面对一致的对象而不用考虑整体部分或者节点叶子的问题。 2、具有较强的扩展性。当我们要更改组合对象时,我们只需要调整内部的层次关系,客户端不用做出任何改动。 3、方便创建出复杂的层次结构。客户端不用理会组合里面的组成细节,容易添加节点或者叶 阅读全文
posted @ 2021-01-26 22:12 格物致知_Tony 阅读(105) 评论(0) 推荐(0) 编辑
第三节:组合模式在 JDK的源码分析
摘要:一、组合模式在 JDK 集合的源码分析 1、Java 的集合类 HashMap 就使用了组合模式 2、代码分析 + Debug 源码 1 public class Composite { 2 3 public static void main(String[] args) { 4 5 Map<Int 阅读全文
posted @ 2021-01-26 22:06 格物致知_Tony 阅读(194) 评论(0) 推荐(0) 编辑
第二节:组合模式应用
摘要:一、需求说明 应用实例要求: 编写程序展示一个学校院系结构:要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。 二、组合模式应用 1、思路分析和图解 2、代码实现 Component 组件抽象类: 1 public abstract class OrganizationCom 阅读全文
posted @ 2021-01-25 23:08 格物致知_Tony 阅读(116) 评论(0) 推荐(0) 编辑
第一节:组合模式——需求说明&基本介绍
摘要:一、需求说明 看一个学校院系展示需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。 如图所示: 二、传统方案解决学校院系展示 1、传统方案解决学校院系展示(类图) 2、传统方案解决学校院系展示存在的问题分析 (1)将学院看做是学 阅读全文
posted @ 2021-01-25 22:58 格物致知_Tony 阅读(91) 评论(0) 推荐(0) 编辑
第三节:装饰者模式在JDK中的应用
摘要:装饰者模式在 JDK 应用的源码分析 Java 的 IO 结构,FilterInputStream 就是一个装饰者: public abstract class InputStream implements Closeable{} 是一个抽象类,即Component public class Fil 阅读全文
posted @ 2021-01-23 22:03 格物致知_Tony 阅读(264) 评论(0) 推荐(0) 编辑
第二节:装饰者模式—定义与应用
摘要:一、装饰者模式(Decorator) 1、装饰者模式定义 (1)装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(OCP); (2)这里提到的动态的将新功能附加到对象 和 OCP 原则,下面使用代码的方式学习。 2、装饰者模式原理 (1)装饰者 阅读全文
posted @ 2021-01-23 19:03 格物致知_Tony 阅读(138) 评论(0) 推荐(0) 编辑
第一节:装饰者设计模式-需求分析与传统实现
摘要:一、需求分析 星巴克咖啡订单项目: 1、咖啡种类/单品咖啡:Espresso(意大利咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡); 2、调料:Milk、Soy(豆浆)、Chocolate; 3、要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便; 阅读全文
posted @ 2021-01-23 18:49 格物致知_Tony 阅读(76) 评论(0) 推荐(0) 编辑
第三节:桥接模式总结
摘要:桥接模式的注意事项和细节 1、实现了抽象 和 实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统; 2、对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其他的部分由具体业务来完成; 3、桥接模式替代多层继承方 阅读全文
posted @ 2021-01-19 22:39 格物致知_Tony 阅读(105) 评论(0) 推荐(0) 编辑
第二节:桥接模式在 JDBC的源码剖析
摘要:桥接模式在JDBC的源码剖析 1、JDBC 的 Driver 接口,如果从桥接模式来看, Driver 就是一个接口,下面可以有 MySQL 的 Driver,Oracle 的 Driver,这些就可以当做实现接口类; 2、代码分析 3、对 JDBC 源码分析的类图 阅读全文
posted @ 2021-01-19 22:36 格物致知_Tony 阅读(134) 评论(0) 推荐(0) 编辑
第一节:桥接模式
摘要:一、传统方式 1、需求分析 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机,上网,打电话等) 2、传统方式解决手机操作问题: 传统方式解决手机使用问题(类图) 3、传统方式解决手机操作问题分析 (1)扩展性问题(类爆炸),如过再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如 阅读全文
posted @ 2021-01-19 22:28 格物致知_Tony 阅读(189) 评论(0) 推荐(0) 编辑
Java 异常处理:总结
摘要:一、注意事项 1、多个异常使用捕获如何处理 ① 多个异常分别处理。 即每一个异常都使用一个 try-catch 捕获,然后进行处理。 ② 多个异常一次捕获,多次处理。 即把异常都放入 try 里面,而 catch 里面处理写每一个异常的情况。 ③ 多个异常一次捕获一次处理。 即把异常都放入 try 阅读全文
posted @ 2021-01-18 18:19 格物致知_Tony 阅读(103) 评论(0) 推荐(0) 编辑
Java 异常处理:自定义异常
摘要:一、为什么要自定义异常类 1、为什么要自定义异常类 Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是没有定义好的,此时我们根据自己业务的异常情况来定义异常类。 一些异常都是 Java 内部定义好的,但是实际开发中也会出现很多异常,这些异常很可能在JDK中没有定义 阅读全文
posted @ 2021-01-18 18:16 格物致知_Tony 阅读(5370) 评论(0) 推荐(1) 编辑
Java 异常处理 之 手动抛出异常
摘要:一、手动抛出异常 throw 在编写程序时,我们必须要考虑程序出现问题的情况。比如,在定义方法时,方法需要接受参数。那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法,就应该告诉调用者,传递合法的数据进来。这时需要使用抛出异常的方式来告诉调用者 。 Java 异常类 阅读全文
posted @ 2021-01-18 18:06 格物致知_Tony 阅读(8465) 评论(0) 推荐(0) 编辑
Java 异常处理 之 异常处理机制二:throws + 异常类型
摘要:一、异常处理机制二:声明抛出异常 1、声明抛出异常 声明抛出异常是 Java 中处理异常的第二种方式 (1)如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理。 (2)在方法声明中 阅读全文
posted @ 2021-01-18 17:05 格物致知_Tony 阅读(453) 评论(0) 推荐(0) 编辑
Java 异常处理 之 异常处理机制一:try-catch-finally
摘要:一、Java 异常处理 编写程序时,要在出现可能出现错误的时候加上检测的代码,如判断分母为0,数据为空,过多的 if-else分支导致程序代码加长,臃肿,可读性差,因此采用异常处理机制。 Java采用的异常处理机制,是将异常处理的程序代码集中在一起,与正常的程序代码分开,使得程序简洁、优雅, 并易于 阅读全文
posted @ 2021-01-18 16:15 格物致知_Tony 阅读(3986) 评论(0) 推荐(0) 编辑
Java 异常处理 之 异常概述与异常体系结构
摘要:一、异常概述 1、异常 在 Java 语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常) 指的是程序在执行过程中,出现的非正常的情况,最终会导致 JVM 的非正常停止。 在 Java 等面向对象的编程语言中,异常本身就是一个类,产生异常就是创建异常对象并抛出 阅读全文
posted @ 2021-01-18 14:56 格物致知_Tony 阅读(173) 评论(0) 推荐(0) 编辑
第六节:适配器模式总结
摘要:适配器模式的注意事项和细节 1)三种命名方式,是根据 src 是以怎样的形式给到 Adapter(在 Adapter里的形式)来命名的; 2)类适配器:以类给到,在 Adapter 里,就是将 src 当做类,继承; 对象适配器:以对象给到,在 Adapter 里,就是将 src 作为一个对象,持有 阅读全文
posted @ 2021-01-17 18:47 格物致知_Tony 阅读(61) 评论(0) 推荐(0) 编辑
第五节:适配器在 SpringMVC 中的应用
摘要:一、适配器模式在 SpringMVC 框架应用的源码分析 1、SpringMVC 中的 HandlerAdapter,就使用了适配器模式; 2、SpringMVC 处理请求的流程回顾: 3、使用 HandlerAdapter 的原因分析: 在容器中会有多个处理器(Controller),且它们类型不 阅读全文
posted @ 2021-01-17 18:42 格物致知_Tony 阅读(390) 评论(0) 推荐(0) 编辑
第四节:接口适配器模式
摘要:一、接口适配器模式 1、接口适配器模式又被称为 适配器模式(Default Adapter Pattern)或者 缺省适配器模式; 2、当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可有选择地覆盖父类的某些方法来实现需 阅读全文
posted @ 2021-01-17 17:45 格物致知_Tony 阅读(378) 评论(0) 推荐(0) 编辑
第三节:对象适配器模式
摘要:一、对象适配器模式 1、基本思路和类的适配器模式相同,只是将 Adapter 类做修改,不是继承 src 类,而是持有 src 类的实例,以解决兼容性的问题。 即:持有 src 类,实现 dst 类接口,完成 src ->dst 的适配; 2、根据 “合成复用原则” ,在系统中尽量使用关联关系(聚合 阅读全文
posted @ 2021-01-17 17:31 格物致知_Tony 阅读(349) 评论(0) 推荐(0) 编辑
第二节:类适配器模式
摘要:一、类适配器模式 基本介绍: Adapter类、通过继承 src 类、实现 dst 类接口,完成 src -> dst的适配。 二、类适配器应用实例 1、应用实例说明 以生活充电器的例子来学习适配器,充电器本身相当于 Adapter,220V 交流电相当于 src(即被适配者),我们的目的 dst( 阅读全文
posted @ 2021-01-17 15:15 格物致知_Tony 阅读(168) 评论(0) 推荐(0) 编辑
第一节:适配器设计模式
摘要:一、生活中适配器例子 二、基本介绍 1、适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作,又被称为包装器(Wrapper)。 2、适配器模式属于结构型模式; 3、主要分为三类:类适配器、对 阅读全文
posted @ 2021-01-17 15:02 格物致知_Tony 阅读(118) 评论(0) 推荐(0) 编辑
第六节:建造者模式总结
摘要:一、建造者模式的注意事项和细节 1、客户端(使用程序)不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象; 2、每一个具体建造者都相对独立,而与其他的具体建造者无关,因为可以很方便地替代具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到 阅读全文
posted @ 2021-01-09 22:06 格物致知_Tony 阅读(81) 评论(0) 推荐(0) 编辑
第五节:建造者模式——变种
摘要:一、分析需求 当需要创建一个多属性的对象,例如:创建一个不可变的 Person 对象,这个 Person 拥有多个属性,但其中名字和性别是必须有的。 代码实现: 1 public class Person { 2 /*名字(必须)*/ 3 private final String name; 4 / 阅读全文
posted @ 2021-01-09 22:05 格物致知_Tony 阅读(107) 评论(0) 推荐(0) 编辑
第四节:建造者模式的应用
摘要:一、建造者模式在 JDK中应用 java.lang.StringBuilder 中的建造者模式: 二、源码中建造者模式角色分析 1、Appendable 接口定义了多个 append方法(抽象方法),即 Appendable 为抽象建造者,定义了抽象方法; 2、AbstractStringBuild 阅读全文
posted @ 2021-01-09 21:25 格物致知_Tony 阅读(114) 评论(0) 推荐(0) 编辑
第三节:建造者模式解决需求
摘要:一、用建造者解决盖房需求 需要建房子:这一过程为打桩、 砌墙、封顶。不管是普通房子也好,别墅也好都需要经历这些过程, 下面我们使用建造者模式(Builder Pattern)来完成; UML 类图: 二、代码实现 产品类: 1 /** 2 * 产品 ——》Product 3 */ 4 public 阅读全文
posted @ 2021-01-09 21:20 格物致知_Tony 阅读(134) 评论(0) 推荐(0) 编辑
第二节:建造者模式基本介绍
摘要:一、建造者模式基本介绍 1、建造者模式(Builder Pattern) 建造者模式又叫生成器模式,是一种对象构建模式。 它可以将复杂对象的建造过程抽象出来(抽象类别),使整个抽象过程的不同实现方式可以构造出不同表现(属性)的对象。 2、建造者模式使用 建造者模式是一步一步创建一个复杂的对象,它允许 阅读全文
posted @ 2021-01-09 18:57 格物致知_Tony 阅读(91) 评论(0) 推荐(0) 编辑
第一节:传统方式完成需求
摘要:一、需求分析 1) 需要建房子:这一过程为打桩、 砌墙、封顶 2) 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的. 二、代码实现 1、UML 类图 2、代码实现 1 public abstract class AbstractHouse { 2 3 //打地基 阅读全文
posted @ 2021-01-09 18:49 格物致知_Tony 阅读(94) 评论(0) 推荐(0) 编辑
第四节:原型模式总结
摘要:原型模式的总结 一、注意事项和细节 1、创建新的对象比较复杂时,可以利用原型模式简化对象的创建过程,同时也能够提高效率; 2、不用重新初始化对象,而是动态地获得对象运行时的状态; 3、如果原始对象发生变化(增加或者减少属性),其它克隆对象的也会发生相应的变化,无需修改代码; 4、在实现深克隆的时候可 阅读全文
posted @ 2021-01-07 22:27 格物致知_Tony 阅读(74) 评论(0) 推荐(0) 编辑
第三节:浅拷贝和深拷贝
摘要:一、浅拷贝 1、对于数据类型是基本数据类型的成员变量,浅拷贝会直接直接值传递,也就是将该属性值复制一份给新的对象; 2、对于数据类型是引用数据的成员变量,比如说成员变量是某个数组、某个类的对象等,那么浅拷贝会进行引用传递,也就是只是将该成员变量的引用值(内存地址)复制一份给新的对象。因为实际上两个对 阅读全文
posted @ 2021-01-07 22:23 格物致知_Tony 阅读(135) 评论(0) 推荐(0) 编辑
第二节:原型模式的应用
摘要:一、原型模式在 Spring 框架中源码分析 1、Spring 中原型 bean 的创建,就是原型模式的应用; 2、代码分析+Debug 源码 3、代码 1 public class Monster { 2 3 private Integer id = 10 ; 4 private String n 阅读全文
posted @ 2021-01-06 22:09 格物致知_Tony 阅读(151) 评论(0) 推荐(0) 编辑
第一节:克隆羊&原型模式
摘要:一、克隆羊问题 现在有一只羊tom, 姓名为: tom, 年龄为: 1, 颜色为:白色,请编写程序创建和tom羊 属性完全相同的10只羊。 二、传统方式实现 1、代码实现 Sheep类: 1 public class Sheep { 2 3 private String name; 4 privat 阅读全文
posted @ 2021-01-06 21:29 格物致知_Tony 阅读(158) 评论(0) 推荐(0) 编辑
第五节:工厂模式总结
摘要:一、工厂模式在 JDK-Calendar 应用的源码分析 测试代码: 1 public class Factory { 2 3 public static void main(String[] args) { 4 // getInstance 是 Calendar 静态方法 5 Calendar c 阅读全文
posted @ 2021-01-05 22:04 格物致知_Tony 阅读(93) 评论(0) 推荐(0) 编辑
第四节:抽象工厂模式
摘要:一、抽象工厂模式 基本介绍 1、抽象工厂模式:定义了一个 interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类; 2、抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合; 3、从设计层面看,抽象工厂模式就是对简单工厂模式的改进(或者称为进一步的抽象)。 4、将工厂抽象成两层,Ab 阅读全文
posted @ 2021-01-05 21:59 格物致知_Tony 阅读(117) 评论(0) 推荐(0) 编辑
第三节:工厂方法模式
摘要:一、分析需求 披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪pizza、北京的胡椒pizza 或者是伦敦的奶酪pizza、 伦敦的胡椒pizza。 二、思路分析 1、思路一 使用简单工厂模式,创建不同的简单工厂类,比如BJPizzaSimpleFactory、LDPizza 阅读全文
posted @ 2021-01-04 22:30 格物致知_Tony 阅读(82) 评论(0) 推荐(0) 编辑
Java 面向对象:理解 main 方法的语法
摘要:一、main 方法 1、在Java中,想必所有人都不会对main方法感到陌生,main方法是Java应用程序的入口方法。程序运行时,要执行的第一个方法就是main方法。 2、得到一个main方法后,不知道你有没有发现,任何时候,我们要创建的main方法的形式都是一样的: public static 阅读全文
posted @ 2021-01-03 21:36 格物致知_Tony 阅读(404) 评论(0) 推荐(0) 编辑
第二节:简单工厂模式(静态工厂模式)
摘要:一、简单工厂模式 1、基本介绍 (1)简单工厂模式是属于创建型模式,是工厂模式的一种。 (2)简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式。 (3)简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)。 (4)在软件开 阅读全文
posted @ 2021-01-03 15:34 格物致知_Tony 阅读(190) 评论(0) 推荐(0) 编辑
第一节:不使用设计模式的传统方式
摘要:一、提出需求 分析一个关于生产披萨的项目:要便于披萨种类的扩展,要便于维护。 (1)披萨的种类很多(比如:GreekPizza、CheesePizza 等) (2)披萨的制作有 prepare,bake,cut,box (3)完成披萨店订购功能。 二、使用传统的方式来完成 思路分析:可以得到,将披萨 阅读全文
posted @ 2021-01-03 14:23 格物致知_Tony 阅读(101) 评论(0) 推荐(0) 编辑
第三章:设计模式概述
摘要:一、设计模式介绍 1) 设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案, 设计模式(Design pattern)代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 2) 设计模式的本质提高 软件的 阅读全文
posted @ 2021-01-02 19:14 格物致知_Tony 阅读(94) 评论(0) 推荐(0) 编辑
第二节:类与类之间的关系
摘要:一、依赖关系(Dependence) 只要是在 类中用到了对方,那么它们之间就存在依赖关系。如果没有对象,连编译都通过不了。 Demo: 1 public class PersonServiceBean { 2 //类 3 private PersonDao personDao; 4 5 publi 阅读全文
posted @ 2021-01-01 00:06 格物致知_Tony 阅读(280) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示