学习设计模式
文章平均质量分 93
fixAllenSun
这个作者很懒,什么都没留下…
展开
-
【设计模式-11】责任链模式
避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。我们创建抽象类 AbstractLogger,带有详细的日志记录级别。然后我们创建三种类型的记录器,都扩展了 AbstractLogger。每个记录器消息的级别是否属于自己的级别,如果是则相应地打印出来,否则将不打印并把消息传给下一个记录器。} }原创 2023-02-12 00:49:35 · 512 阅读 · 0 评论 -
【反射】(03)反射之工厂设计模式(浅谈Spring实现IOC)
【反射】(03)反射之工厂设计模式(浅谈Spring实现IOC)(1)工厂模式简要分析(1.1)先来认识Spring中的IOC功能(以下内容纯属我自己的猜测)(1.1.1)我的猜测(1.1.2)总结一下:Spring的IOC用的技术有两点(1.1.3)来看看实际应用中IOC容器是怎么实现DI依赖注入的:(1.2)实现一个简单的工厂设计模式(1.2.1)第一步:实现一个接口Fruit,统一管理子类(...原创 2020-03-29 16:29:51 · 198 阅读 · 0 评论 -
Java基础笔记(三)---集合框架(2)ArrayList源码
Java基础笔记(三)---集合框架(2)ArrayList源码ArrayList简介ArrayList核心源代码ArrayList源码分析两者练习和区别ArrayList核心扩容技术注意内部类Arraylist经典DemoArrayList简介ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureC...原创 2020-03-15 21:55:43 · 224 阅读 · 0 评论 -
Java基础笔记(二)---类、对象、接口和继承
Java基础笔记(二)---类、对象、接口和继承类和对象创建对象访问修饰符类属性类方法接口与继承对象转型重写多态抽象类类和对象创建对象Hero h = new Hero();创建过程中JVM的对应处理,要继续补充访问修饰符(1)private 私有的自身:是可以访问的同包子类:不能继承不同包子类:不能继承同包类:不能访问其他包类:不能访问(2)package/frien...原创 2020-03-15 17:28:52 · 462 阅读 · 0 评论 -
认识设计模式(十)---模板模式
认识设计模式(十)---模板模式项目需求普通模板模式基本介绍代码示例升级模板模式代码示例UML图使用模板模式的注意事项和细节项目需求豆浆制作问题制作豆浆的流程:选材–添加配料–浸泡–放到豆浆机打碎通过添加不同的配料,可以制作出不同口味的豆浆选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的普通模板模式基本介绍在一个抽象类公开定义了执行它的方法的模板,它的子类...原创 2020-03-15 00:45:43 · 132 阅读 · 0 评论 -
认识设计模式(九)---组合模式
认识设计模式(九)---组合模式项目需求传统的方案组合模式基本介绍代码示例项目需求编写一个程序展示一个学校院系结构,要求在一个页面中展示出学校的院系组成,一个大学有多个学院,一个学院有多个专业传统的方案把学院看做是大学的子类,专业是学院的子类实际上要求是:在一个页面中展示出学校的学院和专业组成,一个学校有多个学院,一个学院有多个专业,因此这种方法不能很好的实现管理的操作,比如对学习院和...原创 2020-03-14 18:02:18 · 121 阅读 · 0 评论 -
认识设计模式(八)---命令模式
认识设计模式(八)---命令模式项目需求基本介绍代码示例UML图命令模式的注意事项和细节项目需求我们买了一套智能家电,有灯、风扇、洗衣机等等,我们只要在手机上安装app就可以控制这些家电的工作这些智能家电来自不桶的厂家,我们不想针对每一种家电都安装一个app分别控制,所以我们希望只要一个app就能控制所有家电要实现一个app控制所有智能家电的需要,需要每个只能家电厂家都提供一个统一的接口...原创 2020-03-14 15:48:36 · 140 阅读 · 0 评论 -
认识设计模式(七)---适配器模式
认识设计模式(七)---适配器模式项目需求基本介绍原理分析类适配器模式代码示例UML图类适配器模式注意事项和细节对象适配器模式基本介绍代码示例UML图对象适配器模式注意事项和细节接口适配器模式基本介绍代码示例适配器模式在SpringMVC框架应用的源码分析项目需求基本介绍适配器模式把某个类的接口转换成客户端期望的另一个接口表示,让原来因为接口不匹配不能一起工作的两个类可以协同工作适配器模...原创 2020-03-14 00:01:05 · 381 阅读 · 0 评论 -
认识设计模式(六)---装饰者模式
认识设计模式(六)---装饰者模式项目需求星巴克咖啡订单项目装饰者模式基本分析代码示例UML图装饰者模式在JDK应用的源码分析项目需求星巴克咖啡订单项目咖啡种类:Espresso意大利咖啡、ShortBlack、LongBlack调料种类:Milk牛奶、Soy豆浆、Chocolate巧克力要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便计算不同种类咖啡的费用:客户可以点...原创 2020-03-13 22:35:16 · 157 阅读 · 0 评论 -
认识设计模式(五)---策略模式
认识设计模式(五)---策略模式项目需求基本介绍传统方案代码示例问题分析策略模式基本介绍思路分析代码示例UML图总结分析策略模式在JDK应用源码分析项目需求基本介绍有各种鸭子,比如野鸭、北京鸭、水鸭等等,鸭子有各种行为,比如叫、飞行显示鸭子信息传统方案代码示例(1)鸭子抽象类public abstract class Duck { //无参构造器 public ...原创 2020-03-13 22:04:55 · 209 阅读 · 0 评论 -
认识设计模式(四)---工厂模式
认识设计模式(四)---工厂模式工厂模式具体需求传统方式思路分析代码示例传统方式优缺点分析简单工厂模式基本介绍代码示例简单工厂模式UML图工厂方法模式思路分析代码示例UML图抽象工厂模式基本介绍代码示例UML图工厂模式在JDK-Calendar应用的源码分析工厂模式具体需求看一个披萨的项目,要便于披萨种类的扩展,要便于维护(当需要添加新的披萨种类时,要尽量少改动代码)披萨的种类披萨的制...原创 2020-03-12 23:43:44 · 201 阅读 · 0 评论 -
认识设计模式(三)---代理模式(Spring AOP)
认识设计模式(三)---代理模式代理模式简单介绍静态代理基本介绍思路分析代码示例UML图静态代理的优缺点动态代理基本介绍思路分析代码示例UML图优点分析Cglib代理基本介绍思路分析Spring AOP源码分析代理模式简单介绍(1)什么是代理模式?给一个对象提供一个替身,通过这个替身来访问这个对象(2)使用代理对象的好处是什么?不仅仅可以实现目标对象,还能通过代理对象扩展目标对象的功能...原创 2020-03-12 21:55:12 · 330 阅读 · 0 评论 -
认识设计模式(二)---观察者模式
认识设计模式(二)---观察者模式了解项目需求普通的方案普通方案设计思想普通方案代码示例普通方案UML图普通方案问题分析观察者模式的方案观察者模式设计思想观察者模式代码示例观察者模式UML图观察者模式在JDK应用的源码分析个人的学习感想了解项目需求项目名称:天气预报气象站每天测量温度+气压+湿度,并且把测量的结果发布出去要设计开放型API,这样第三方网站就能接入气象站,获取最新的气象数据...原创 2020-03-12 00:57:27 · 309 阅读 · 0 评论 -
认识设计模式(一)---单例模式(7)
认识设计模式(一)---单例模式(7)(一)懒汉式(枚举)(1)单例类代码如下:(2)测试类代码如下(二)优缺点分析(三)区别为什么使用枚举?(四)单例模式在JDK应用的源码分析(一)懒汉式(枚举)这种方式是Effective Java作者Josh Bloch提倡的方式,推荐使用(1)单例类代码如下:enum Singleton07{ INSTANCE; public vo...原创 2020-03-11 00:09:55 · 99 阅读 · 0 评论 -
认识设计模式(一)---单例模式(6)
认识设计模式(一)---单例模式(6)(一)懒汉式(静态内部类)(1)单例类代码如下:(二)优缺点分析(三)与懒汉式(前三个)的区别为什么使用volatile?为什么使用静态内部类?(1)实现懒加载(2)确保线程安全(3)保证单例的唯一性(四)懒汉式(静态内部类)的缺点(一)懒汉式(静态内部类)(1)单例类代码如下:class Singleton06{ //1-构造器私有化 ...原创 2020-03-10 23:52:50 · 1041 阅读 · 0 评论 -
认识设计模式(一)---单例模式(5)
认识设计模式(一)---单例模式(5)(一)懒汉式(双重检查)(1)步骤如下:(2)单例类代码如下:(3)测试类代码如下(二)优缺点分析(三)与懒汉式(前两个)的区别为什么使用double check?(一)懒汉式(双重检查)(1)步骤如下:构造器私有化(防止new再获取对象)类的内部创建对象(但是不急着实例化)第一次check:提供一个公有的静态方法,当使用到这个方法时,先判断对象是...原创 2020-03-10 23:09:01 · 133 阅读 · 0 评论 -
认识设计模式(一)---单例模式(4)
认识设计模式(一)---单例模式(4)(一)懒汉式(线程安全,同步方法)(1)步骤如下:(2)单例类代码如下:(3)测试类代码如下(二)优缺点分析(三)与懒汉式(线程不安全)的区别(一)懒汉式(线程安全,同步方法)(1)步骤如下:构造器私有化(防止new再获取对象)类的内部创建对象(但是不急着实例化)提供一个公有的静态方法,当使用到这个方法时,先判断对象是不是null,如果为null再...原创 2020-03-10 22:46:30 · 109 阅读 · 0 评论 -
认识设计模式(一)---单例模式(3)
认识设计模式(一)---单例模式(3)(一)懒汉式(线程不安全)(1)步骤如下:(2)单例类代码如下:(3)测试类代码如下(二)优缺点分析(三)与饿汉式的区别(一)懒汉式(线程不安全)(1)步骤如下:构造器私有化(防止new再获取对象)类的内部创建对象(但是不急着实例化)提供一个公有的静态方法,当使用到这个方法时,先判断对象是不是null,如果为null再去实例化对象instance(...原创 2020-03-10 22:37:58 · 91 阅读 · 0 评论 -
认识设计模式(一)---单例模式(2)
认识设计模式(一)---单例模式(2)(一)饿汉式(静态代码块)(1)步骤如下:(2)单例类代码如下:(3)测试类代码如下(二)优缺点分析(三)与饿汉式(静态变量)的区别(一)饿汉式(静态代码块)(1)步骤如下:构造器私有化(防止new再获取对象)类的内部创建对象(但是不急着实例化)在静态代码块里,对象实例化向外暴露一个静态的公共方法,getInstance,这个唯一的方法用来获取对...原创 2020-03-10 22:12:42 · 88 阅读 · 0 评论 -
认识设计模式(一)---单例模式(1)
认识设计模式(一)---单例模式(1)(一)单例模式介绍(二)单例模式的八种方式(三)饿汉式(静态常量)(1)步骤如下:(2)单例类代码如下:(3)测试类代码如下(四)优缺点分析(1)优点(2)缺点(无)总结(一)单例模式介绍一句话说出单例模式的所用:就是用方法让整个系统中,某个类只存在一个对象实例,并且这个类值提供一个取得该对象实例的方法(静态方法)。举个栗子吧:Hibernate的Se...原创 2020-03-10 22:00:19 · 99 阅读 · 0 评论