- 博客(23)
- 收藏
- 关注
原创 代理模式(Proxy Pattern)
代理模式(Proxy Pattern) 是一种结构型设计模式,它通过一个代理对象来控制对另一个对象(目标对象)的访问。代理模式的核心思想是“间接访问”,即客户端不直接访问目标对象,而是通过代理对象间接访问。代理模式通过引入代理对象,间接地控制对真实主题的访问。它具有透明性、灵活性和扩展性等优点,适用于需要控制访问权限、优化性能或扩展功能的场景。在实际开发中,代理模式可以显著提高系统的灵活性和可维护性。
2025-02-24 12:16:42
629
原创 外观模式(Facade Pattern)
外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口,从而简化客户端与系统之间的交互。以下是对外观模式的教科书级详解,包括概念、结构、优缺点以及代码示例。
2025-02-21 16:28:13
641
原创 装饰器模式(Decorator Pattern)
装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰器模式通过将对象包装在一个装饰器类中,使得类的功能可以以层次化的方式进行扩展。装饰器模式的最大优势是它遵循了开闭原则,即“对扩展开放,对修改关闭”。装饰器模式是一种强大且灵活的设计模式,它允许在不改变原有对象结构的情况下,动态地添加职责。通过组合而非继承的方式,装饰器模式避免了类的爆炸式增长,并提供了高度的灵活性。
2025-02-21 10:25:45
258
原创 组合模式(Composite Pattern)
核心思想:通过组合代替继承,将抽象(功能定义)与实现(底层逻辑)解耦。关键角色:抽象化(Abstraction):定义高层接口,包含对实现化的引用。扩展抽象化(Refined Abstraction):对抽象化的扩展。实现化(Implementor):定义底层接口,供抽象化调用。具体实现化(Concrete Implementor):实现化接口的具体类。
2025-02-20 15:56:20
273
原创 适配器模式
适配器模式是一种结构型设计模式,用于解决接口不兼容问题。核心思想:将一个类的接口转换为另一个客户端期望的接口,使原本因接口不匹配而无法协作的类能够协同工作。
2025-02-20 10:50:59
329
原创 建造者模式(Builder Pattern)详解
建造者模式(Builder Pattern)是一种创建型设计模式,其核心思想是通过将复杂对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。ConcreteBuilder(具体建造者):实现建造者接口,提供构建产品的具体实现。Builder(抽象建造者):定义创建产品的抽象接口,声明构建产品各个部分的方法。Director(指挥者):负责控制建造过程,按照特定的顺序调用建造者的方法。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
2025-02-19 15:28:35
266
原创 抽象工厂模式详解
具体工厂:实现抽象工厂的操作,创建具体产品对象,这里是CatFactory和DogFactory(或者我们可以有一个统一的工厂来创建猫和狗)。这个方法在具体工厂中被实现。具体产品:Cat和Dog类实现了Animal接口,并提供了各自makeSound方法的具体实现。抽象产品:定义产品的接口,这里是Animal接口,它可以有多个实现,如Cat和Dog。类的数量会增加,因为需要为每个产品系列创建具体的工厂类和具体的产品类。具体产品:实现抽象产品的接口,这里是Cat和Dog类。
2025-02-19 12:02:49
225
原创 工厂方法模式
具体工厂(ConcreteFactory):实现了抽象工厂接口,提供了创建具体产品对象的实现。具体产品(ConcreteProduct):实现了抽象产品接口,是实际被创建和使用的对象。抽象产品(Product):这是一个接口或抽象类,定义了产品的特性。ConcreteProduct(具体产品):实现了抽象产品接口,是工厂方法实际返回的对象。Factory(抽象工厂):声明了工厂方法,返回一个Product类型的对象。Product(抽象产品):定义了工厂方法返回的对象的接口。
2025-02-19 11:25:36
340
原创 简单工厂模式
概述:简单工厂模式的核心思想是将对象的创建过程封装在一个工厂类中,客户端只需要通过工厂类来创建对象,而无需关心具体的创建细节。ConcreteProduct(具体产品角色):这是简单工厂模式的创建目标,所有被创建的对象都是某个具体类的实例。具体产品类实现了抽象产品类中声明的抽象方法。客户端调用工厂类:客户端代码通过调用工厂类的静态方法来创建产品对象,并调用产品对象的方法来实现具体功能。易于扩展:当需要增加新的产品类型时,只需要增加新的具体产品类,并在工厂类中添加相应的创建逻辑即可。
2025-02-19 10:41:13
274
原创 懒汉式单例模式详解
懒汉式单例模式是一种在需要时才创建实例对象的单例模式,可以节省内存资源。但在多线程环境下需要注意线程安全问题,可以使用同步方法或双重检测锁机制等线程安全的实现方式。与饿汉式单例模式不同,懒汉式在类被加载时不创建实例对象,而是在首次使用该实例时才会创建。这种方式可以节省内存资源,因为实例对象只有在需要时才会被创建。懒汉式单例模式的实现方式有多种,包括基础的懒汉式、线程安全的懒汉式(如使用同步方法或双重检测锁机制)等。为了解决这个问题,可以使用同步方法或双重检测锁机制等线程安全的实现方式。
2025-02-19 10:36:27
358
原创 饿汉式单例模式详解
定义:饿汉式单例模式确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。特点:单例类只会有一个实例:通过类加载时创建对象,确保全局唯一性。单例类的实例由该类自己提供对外访问的方法:通常通过静态方法获取实例。单例类的构造函数必须是私有的:防止外部通过new操作符创建对象。天然线程安全:因为实例在类加载时创建,不涉及多线程竞争问题。
2025-02-19 10:33:28
719
原创 COOKIE
/NO.4 设置路径为:/cookieProject/cookie 表示只能/cookieProject/cookie 目录下的资源才能访问到cookie对象。time为0:表示删除该cookie,cookie作废,无论是在浏览器内存中还是客户端硬盘上都会删除该cookie,如果之前有保存该cookie,可以通过setMaxAge(0)删除该cookie。//NO.2 设置路径为:/cookieProject 表示当前cookieProject项目下任何项目都能拿到cookie对象。
2025-02-18 14:16:17
858
原创 session
System.out.println("session最后一次访问的时间:"+session.getLastAccessedTime());System.out.println("session创建时间:"+session.getCreationTime());"是":"否"));System.out.println("判断是否是新的session对象:"+(session.isNew()?"是":"否"));System.out.println("最大不活动时间:"+time+"秒");
2025-02-18 14:15:15
418
原创 SpringAOP
4.执行指定包下的子包的任意类任意方法:execution(* com..*.*(..)) 表示执行com包下所有子包的所有方法。* 3.执行指定包下的任意类任意方法:execution(* com.dao.*.*(..)) 执行dao包下所有类所有方法。System.out.println(" 异常通知... 异常信息:"+e.getMessage());System.out.println(" 环绕通知的前置通知...");System.out.println(" 前置通知...");
2025-02-18 14:14:05
682
原创 SpringJDBC
指定连接池的初始化连接数,取值应在minPoolSize与maxPoolSize之间 默认 default 3。配置定时任务驱动 开启这个配置,spring才能识别 @Scheduled -->加载database_resource.properties 读取文件配置 -->配置jdbcTemplate实例 并注入datasource数据源 -->当连接池中的链接耗尽时c3p0一次同时获取的连接数 默认 3。指定连接池中保留最大的连接数 默认15。方式二: 开启IOC注解扫描 -->新增用户信息条数:"
2025-02-18 14:12:50
536
原创 JSP和JSTL
要跳转的页面地址"></jsp:forward>--相当于后台的req.getRequestDispatcher("getDomainObject.jsp").forward(req, resp);if("苏0508".equals(name)&& "123456".equals(pwd)) {req.setAttribute("msg", "请输入正确的用户名和密码");页面引入JSTL标签库,页面引入格式:<%@taglib uri="路径" prefix="别名" %>
2025-02-18 14:07:37
859
原创 定时任务(2)
定时任务2...2021-06-08 19:09:55。定时任务1...2021-06-08 19:09:56。定时任务1...2021-06-08 19:09:58。定时任务2...2021-06-08 19:10:00。定时任务1...2021-06-08 19:10:00。定时任务1...2021-06-08 19:10:02。定时任务1...2021-06-08 19:10:04。定时任务2...2021-06-08 19:10:05。方式二: 开启IOC注解扫描 -->
2025-02-18 13:58:05
365
原创 定时任务(1)
定时任务1...2021-06-08 18:45:28。定时任务1...2021-06-08 18:45:30。定时任务1...2021-06-08 18:45:32。定时任务1...2021-06-08 18:45:34。定时任务1...2021-06-08 18:45:36。定时任务1...2021-06-08 18:45:38。定时任务1...2021-06-08 18:45:40。定时任务2...2021-06-08 18:45:45。定时任务1...2021-06-08 18:45:50。
2025-02-18 13:56:34
526
原创 策略模式的小样例
策略模式()是一种行为型设计模式,它定义了算法家族,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户端。
2025-02-18 13:53:01
677
原创 上传、下载
if("请输入你要下载的文件名".equals(fileName)||fileName==null||"".equals(fileName.trim())) {//设置响应类型:设置为浏览器无法识别的MIME类型:"application/octet-stream"、"application/x-msdownload"System.out.println("文件存放路径:"+filePath+"template/"+fileName);System.out.println("文件下载处理...");
2025-02-18 13:45:53
883
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人