
设计模式
文章平均质量分 54
Java设计模式 自己学习的点点滴滴
伟子涵
每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛
展开
-
重学设计模式之 解释器模式
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子 简单来说 为了解释一种语言 而为语言创建的解释器。如图所示 spring 里面都帮我们考虑到了 没有自己写这么麻烦 所以说spring 里面源码还是值得去深入探究的。 1.语法由很多类表示,容易改变及扩展此 “语言”源码解析 在spring 当中这个类就是使用解释器设计模式。 1、某个特定类型问题发生频率足够高。1.当语法规则数目太多时,增加了系统复杂度。1.2 类型 : 行为型。...原创 2022-08-13 21:39:12 · 161 阅读 · 0 评论 -
重学设计模式-迭代器模式
提供一种方法,顺序访问一个集合对象中的各个元素 而又不暴露该对象的内部表示。 1、访问一个集合对象的内容而无需暴露它的内部表示。 2、为遍历不同的集合结构提供一个统一的接口。 1.分离了集合对象的遍历行为。在mybatis 当中的应用是这个类。1.2 类型 : 行为型。5.迭代器-相关设计模式。迭代器模式和访问者模式。这个类当中 使用迭代器。1.类的个数成对增加。...原创 2022-08-07 19:58:14 · 139 阅读 · 0 评论 -
重学设计模式-模板方法模式
2、各子类中公共的行为被提取出来并集中到一个公共父类中,从而避免代码重复。 模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。 1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。3.继承关系自身缺点,如果父类添加新的抽象方法,所有子类都要改一遍。定义了一个算法的骨架,并可以子类为一个或多个步骤提供现实。模板方法模式 不该变算法流程 而是交给子类去实现。模板方法模式和工厂方法模式。的应用 使用模板方法模式。模板方法模式和策略模式。...原创 2022-08-06 21:59:11 · 180 阅读 · 0 评论 -
重学设计模式之 动态代理二
动态代理代码实现以及mybatis 当中如何生成实现类原创 2022-08-04 22:35:11 · 163 阅读 · 0 评论 -
重学设计模式之代理模式一 静态代理
当Bean 有实现接口时 ,Spring 就会用JDK 的动态代理。2.在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢。 1.代理模式能将代理对象与真实被调用的目标对象分离。 代理对象在客户端和目标对象之间起到中介的作用。为其他对象提供一种代理,以控制对这个对象的访问。1.代理模式会造成系统设计中类的数目增加。6.Spring 代理选择-扩展。 3.保护目标对象。 4.增强目标对象。 1、保护目标对象。 2、增强目标对象。...原创 2022-08-03 22:09:56 · 191 阅读 · 0 评论 -
重学设计模式之-桥接模式
2、一个类存在两个或多个独立变化的维度且这两个或多个维度都需要独立进行扩展。将抽象部分与它的具体实现部分分离使它们都可以独立地变化解耦。通过组合的方式建议两个类之间联系,而不是继承。3、不希望使用继承或因为多层继承导致系统类的个数增加。1、抽象和具体实现之间增加更多的灵活性。1.分离抽象部分及具体实现部分解耦。2.需要正确地设别出系统中两个独立变化的维度。1.2类型结构型。桥接模式jdk当中应用解析。桥接模式和适配器模式。...原创 2022-08-01 21:55:04 · 261 阅读 · 0 评论 -
重学设计模式之-组合模式-mybatis-SqlNode使用组合模式
1.清楚地定义分层次的复杂对象,表示对象的全部或部分层次。2.让客户端忽略了层次的差异方便对整个层次结构进行控制。将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使客户端对单个对象和组合对象保持一致的方式处理。1、希望客户端可以忽略组合对象与单个对象的差异时。类它使用的是接口而我的案例当中使用抽象类。在mybatis使用组合模式类。当中是用组合模式的代码如图。5.组合-相关的设计模式。组合模式和访问者模式。...原创 2022-07-31 10:13:54 · 312 阅读 · 0 评论 -
重学设计模式-享元设计模式-tomcat当中使用
运用共享技术有效地支持大量细粒度的对象一句话来说的话就是减少创建对象的数量从而减少内存的占用。1.减少对象的创建降低内存中对象的数量,降低系统的内存,提高效率。1、常常应用于系统底层的开发以便解决系统的性能问题。提供了减少对象数量从而改善应用所需的对象结构的方式。2、系统有大量相似对象、需要缓冲池的场景。享元设计模式jdk当中应用解析。当中是用享元模式的代码如图。当中大量的使用享元设计模式。1.2类型结构型。6.享元-相关的设计模式。...原创 2022-07-28 22:48:56 · 259 阅读 · 0 评论 -
重学设计模式-适配器模式-spring当中的应用
2、不是软件设计阶段考虑的设计模式,是随着软件维护由于不同产品不同厂家造成功能类似而接口不相同情况下的解决方案。1、以及存在的类,它的方法和需求不匹配时(方法结果相同或相似)1.能提高类的透明性和复用,现有的类复用但不需要改变。1.适配器编写过程需要全面考虑,可能会增加系统的复杂性。在SpringMvc当中使用适配器设计模式应用。将一个类的接口转换成客户期望的另一个接口。适配器模式和外观模式两个适配的粒度不同。1.2类型结构型。6.适配-相关的设计模式。.........原创 2022-07-27 22:23:46 · 548 阅读 · 0 评论 -
重学设计模式之 装饰者模式
1.继承的有力补充,比继承灵活,不改变原有对象的情况下给一个对象扩展功能。2、动态的给一个对象添加功能,这些功能可以再动态的撤销。2.通过使用不同装饰类以及这些装饰类的排列组合,可以实现不同效果。1、扩展一个类的功能或给一个类添加附加职责。在不改变原有对象的基础之上,将功能附加到对象上。1.会出现更多的代码,更多的类,增加程序复杂性。在mybatis当中使用装饰者模式应用为。1.2类型结构型。5.装饰者-相关的设计模式。装饰者模式和适配器模式。装饰者模式和代理模式。...原创 2022-07-26 22:56:29 · 199 阅读 · 0 评论 -
重学设计模式之外观模式
2、构建多层系统结构,利用外观对象作为每层的入口简化层间调用。又叫门面模式提供了一个统一的接口,用来访问子系统中的一群接口。1.简化了调用过程无需了解深入子系统,防止带来风险。外观模式定义了一个高层接口,让子系统更容易使用。1、子系统越来越复杂,增加外观模式提供简单调用接口。1.增加子系统扩展子系统行为容易引入风险。在mybatis当中使用外观设计模式应用。1.2类型结构型。外观模式和抽象工厂模式。外观模式和中介者模式。...原创 2022-07-25 23:13:57 · 239 阅读 · 0 评论 -
重学设计模式之 原型设计模式
定义1.类初始化消耗较多资源2.new产生的一个对象需要非常繁琐的过程 数据准备 访问权限等3.构造函数比较复杂4.循环体中生产大量对象时1.简化创建过程 2.原型模式性能比直接new一个对象性能高1.必须配备克隆方法2.对克隆复杂对象或对克隆出的对象进行复杂改造时,容易引入风险。3.浅拷贝 深拷贝要运用得当1.0 邮件类2.0 发送邮件工具类3.0 测试类......原创 2022-07-22 22:51:20 · 168 阅读 · 0 评论 -
单例模式(三)最佳实践枚举单例与ThreadLocal的单例
6.单例模式在springmybatis框架当中的使用如图所示。3.编写ThreadLocalInstance单例模式。5.测试类这里就不写了测试代码都在代码如下当中。6.1spring当中这个类。在mybatis当中使用该类。原创 2022-07-21 22:53:36 · 316 阅读 · 0 评论 -
单例模式(二)懒汉式之多线程与内部类
在之前单例模式一文章基础上进行编写代码如下。1.使用线程安全情况进行改造。原创 2022-07-19 23:34:00 · 182 阅读 · 0 评论 -
重学设计模式之单例模式(一)
单例模式之懒汉模式 定义:保证一个类仅有有一个实例 病提供一个全局访问点原创 2022-07-18 22:55:02 · 155 阅读 · 0 评论 -
重学设计模式之 建造者模式
定义1.如果一个对象有非常复杂的内部结构 很多属性2.想把复杂对象的创建和使用分离1.封装性好 创建和使用分离2.扩展性好、建造类之间独立 一定程度上解耦1.产生多余的builder 对象2.产品内部发生变化 建造者都需要进行修改 成本较大1.建造者 注重方法调用顺序 可以创建一些复杂的产品 由各种复杂的组件组成2。工厂模式 注重创建产品 创建出来的都是一个样子创建对象粒度不同3.关注点工厂模式 创建出来就ok 工厂不关心顺序建造者 不当指创建出来 还要知道这些产品是那些组件组成的 关心顺原创 2022-07-14 00:00:38 · 204 阅读 · 0 评论 -
抽象工厂之设计模式三
定义1、客户端应用层不依赖于产品类实例如何被创建、实现等细节2、强调一系列相关的产品对象属于同一产品族一起使用创建对象需要大量重复的代码3、提供一个产品类的库、所有的产品以同样的接口出现,从而使客户端不依赖于具体的实现1、具体产品在应用层代码隔离 无须关心创建细节2、将一个系列的产品族统一到一起创建1、规定了所有可能被创建的产品集合,产品族中扩展新的产品困难,需要修改抽象工厂的接口2、增加了系统的抽象性和理解难度1.0 创建课程工厂2.0 写一个 抽象 Article 类 并且里面有个抽象方法3原创 2022-07-11 23:14:28 · 165 阅读 · 0 评论 -
重学设计模式---之工厂方法
定义1、创建对象需要大量重复的代码2、客户端应用层 不依赖于产品类实例如何被创建 实现等细节3、一个类通过其子类来指定创建那个对象1.用户只需要关心所需产品对应的工厂 无须关心创建细节2.加入新的产品符合开闭原则 提高可扩展性1.类的个数容易过多 增加复杂度2. 增加了系统的抽象性和理解难度1.基于第一章 简单工厂设计 重改VideoFactory 里面代码2.0 写一个 JavaVideoFactory 去继承它 并且重写里面的方法3.0 测试方法如下uml 图 如图所示 代码如下..原创 2022-07-07 23:07:21 · 213 阅读 · 0 评论 -
重学设计模式之简单工厂
1.创建抽象类2.写两个类继承抽象类 重写抽象方法3.简单工厂4.测试类原创 2022-07-06 21:40:29 · 123 阅读 · 0 评论 -
面向对象 接口之代理模式(ProxySubject)
面向对象接口之代理工厂模式原创 2017-05-19 23:09:15 · 456 阅读 · 0 评论 -
神坑面试题之策略模式
本图片来自深圳一家独角兽公司神坑面试题之设计模式当我看到这题目 觉得很有意思 不就是去除if else if 吗? 这不就是典型的策略模式吗?当然单独靠策略模式是无法全部消除if else if的 还需要靠工厂+策略模式 实现消除ifGOF的《设计模式》著作中认为策略模式可以消除一些条件语句,我对此持怀疑态度。正如上面的例子,虽然由于Context在初始化的时候已经指定了策略实现,在计算逻辑中不需要根据条件选择逻辑分支。但是,客户端代码在初始化Context的时候,如何判断应该传入哪个策略实现呢?其实原创 2021-11-28 22:43:16 · 882 阅读 · 2 评论 -
面向对象之一抽象类 抽象模板设计 (Servlet)就用到了模板设计
面向对象之一抽象类 抽象模板设计 (Servlet)就用到了模板设计原创 2017-05-16 22:25:31 · 281 阅读 · 1 评论 -
java之单例模式
java最简单单列模式之一原创 2017-05-19 23:01:47 · 227 阅读 · 0 评论 -
Spring 的静态工厂及实例工厂的使用 重温自己对于Spring 的理解
静态工厂方法:直接调用静态方法可以返回Bean的实例package com.zw.factory;import java.util.HashMap;import java.util.Map;public class StaticCarFactory {/*** 静态工厂方法:直接调用静态方法可以返回Bean的实例**/private static Map<String ,Car >...原创 2018-08-31 11:52:28 · 475 阅读 · 0 评论 -
面向对象 接口之简单工厂模式Factory
接口之简单工厂模式原创 2017-05-19 23:06:28 · 339 阅读 · 0 评论