- 博客(11)
- 收藏
- 关注
原创 装饰者模式
装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。装饰模式降低了系统的耦合度,可以动态增加或删除对象的职责,并使需要装饰的具体构件类和用于装饰的具体装饰类都可以独立变化,增加新的具体构件类和具体装饰类都非常方便,符合开闭原则。装饰模式的定义如下:装饰模式是一种对象结构型模式,它以对客户透明的方式动态地给一个对象附加上更多的责任,可以在不需要创建更多子类的情况下让对象的功能得以扩展。
2024-08-29 15:41:22
869
原创 单例模式及应用
单例模式的定义如下:单例模式是一种对象创建型模式,其有3个要点:(1)某个类只能有一个实例(2)该类必须自行创建并保存这个实例(3)该类必须自行向整个系统提供这个实例。为了满足前两个条件,需要满足(1)单例类构造函数的可见性为private(2)提供一个类型为自身的静态私有成员变量;为了满足第三个条件,需要满足:(3)提供一个公有的静态工厂方法单例模式是结构最简单的设计模式,它只包含一个类,即单例类,其结构图如图1所示。
2024-08-14 23:08:26
946
原创 适配器模式
适配器模式可以将一个类的接口和另一个类的接口匹配起来,而无需修改原来的适配者接口和抽象目标类接口。适配器模式的别名为包装器(Wrapper)模式,它既可以作为类结构型模式,也可以作为对象结构型模式。在适配器模式的定义中所提及的接口是指广义的接口,它可以表示一个方法或方法的集合。
2024-08-11 21:26:11
1872
原创 模板方法模式
模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。模板方法模式是最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供了一个称为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖某些步骤,从而使得相同的算法框架可以有不同的执行结果。模板方法模式提供了一个模板方法来定义算法框架,而某些具体步骤的实现可以在其子类中完成。
2024-08-02 21:35:08
664
原创 策略模式及用例
策略模式用于算法的自由切换和扩展,对应于解决某一问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便地更换算法和增加新的算法。策略模式实现了算法定义和算法使用的分离,它通过继承和多态的机制实现对算法族的使用和管理,是一个简单,实用的设计模式。策略模式的定义如下:策略模式又称为政策(Policy)模式,它是一种对象行为型模式。
2024-08-01 22:06:16
1882
原创 中介者模式
如果在一个系统中对象之间存在多对多的相互关系,可以将对象之间的一些交互行为从各个对象中分离出来,集中封装在一个中介者对象中,并由该中介者进行统一协调,这样对象之间多对多的复杂关系就转化为相对简单的一对多关系。中介者模式又称为调停者模式,它是一种对象行为型模式。在中介者模式中,通过引入中介者对象来简化对象之间的复杂交互,中介者模式是迪米特法则的一个典型应用。
2024-07-31 23:04:21
867
原创 观察者模式与java事件处理1
观察者模式是使用频率最高的设计模式之一,它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中发生改变的对象称为观察目标,而被通知的对象称之为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。Observer本来的意思时“观察者”,但实际Observer角色并非主动地去观察,而是被动地接受来自Subject的通知。
2024-07-15 22:09:00
672
原创 16.合并区间
将数组按照左端点进行排序,记录当前最大的右端点值(该值不一定是最右边的数组右端点,因此需要记录一下),然后遍历,如果当前遍历的数组左端点大于记录的当前最大右端点值,说明不重合,将相应的左右端点放入结果集中。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].输入:intervals = [[1,4],[4,5]]输出:[[1,6],[8,10],[15,18]]输出:[[1,5]]
2024-07-12 10:36:15
152
原创 15.最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6。示例2:输入:nums = [1]输出:1示例3:输入:nums = [5,4,-1,7,8]输出:23。
2024-07-12 09:34:02
294
原创 4.移动0
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例1:输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]示例2:输入: nums = [0]输出: [0]
2024-07-03 11:00:34
141
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人