设计模式
文章平均质量分 84
Java设计模式,黑马程序课程的学习笔记,
Singcing
夏天好热,冰淇淋好凉,我要在冬天吃冰糖
展开
-
模板方法模式_黑马程序员笔记
模板方法模式原创 2022-06-28 14:49:03 · 86 阅读 · 0 评论 -
中介者_黑马程序员学习笔记
中介者模式,Java原创 2022-06-21 11:19:36 · 100 阅读 · 0 评论 -
备忘录模式_黑马程序员学习笔记
备忘录模式原创 2022-06-21 10:04:10 · 128 阅读 · 0 评论 -
命令模式_黑马程序员笔记
命令模式原创 2022-06-20 11:47:07 · 92 阅读 · 0 评论 -
迭代器模式_黑马程序员学习笔记
迭代器模式,黑马程序员笔记原创 2022-06-19 11:41:22 · 86 阅读 · 0 评论 -
外观模式_黑马程序员学习笔记
外观模式_黑马程序员学习笔记原创 2022-06-05 21:36:30 · 69 阅读 · 0 评论 -
桥接模式_黑马程序员学习笔记
概述现在有一个需求,需要创建不同的图形,并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系:我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色,就需要创建更多的类。试想,在一个有多种可能会变化的维度的系统中,用继承方式会造成类爆炸,扩展起来不灵活。每次在一个维度上新增一个具体实现都要增加多个子类。为了更加灵活的设计系统,我们此时可以考虑使用桥接模式。定义:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现.原创 2022-05-20 00:18:27 · 214 阅读 · 0 评论 -
装饰者模式_黑马程序员学习笔记
概述我们先来看一个快餐店的例子。快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。使用继承的方式存在的问题: 扩展性不好 如果要再加一种配料(火腿肠),我们就会发现需要给FriedRice和FriedNoodles分别定义一个子类。如果要新增一个快餐品类(炒河粉)的话,就需要定义更多的子类。 产生过多的子类 定义:指在不改变现有对象结构的情况下,动态地给该.原创 2022-05-19 21:13:16 · 126 阅读 · 0 评论 -
适配器模式_黑马程序员学习笔记
概述如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。生活中这样的例子很多,手机充电器(将220v转换为5v的电压),读卡器等,其实就是使用到了适配器模式。定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类适配器模式..原创 2022-05-19 20:45:48 · 142 阅读 · 0 评论 -
责任链模式_黑马程序员学习笔记
目录1.介绍定义2.结构3.案例实现代码实现运行结果4.优缺点(1) 优点(2) 缺点5. 案例二案例出处:类图表示:代码实现运算结果:1.介绍在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓...原创 2022-05-06 07:21:28 · 135 阅读 · 1 评论 -
访问者模式
1.概述定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。2.结构访问者模式包含以下主要角色:抽象访问者(Visitor)角色:定义了对每一个元素(Element)访问的行为,它的参数就是可以访问的元素,它的方法个数理论上来讲与元素类个数(Element的实现类个数)是一样的,从这点不难看出,访问者模式要求元素类的个数不能改变。 具体访问者(ConcreteVisitor)角色:给出对每一个元素类访问时所产生的具..原创 2022-04-21 17:13:47 · 129 阅读 · 1 评论 -
享元模式_黑马程序员学习笔记
1.定义运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。2.结构享元(Flyweight )模式中存在以下两种状态:内部状态,即不会随着环境的改变而改变的可共享部分。 外部状态,指随环境改变而改变的不可以共享的部分。享元模式的实现要领就是区分应用中的这两种状态,并将外部状态外部化。享元模式的主要有以下角色:抽象享元角色(Flyweight):通常是一个接口或抽象类,在..原创 2022-04-11 22:31:41 · 91 阅读 · 0 评论 -
组合模式_黑马程序员学习笔记
1.概述对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象(文件夹),也可以是叶子对象(文件)。但是由于容器对象和叶子对象在功能上面的区别,使得我们在使用的过程中必须要区分容器对象和叶子对象,但是这样就会给客户带来不必要的麻烦,作为客户而已,它始终希望能够一致的对..原创 2022-04-10 16:13:56 · 109 阅读 · 0 评论 -
原型模式_黑马程序员学习笔记
1.概述用一个已经创建的实例为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。2.结构原型模式包含如下角色:抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。 具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。 访问类:使用具体原型类中的 clone() 方法来复制新的对象。3.实现原型模式的克隆分为浅克隆和深克隆。浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指...原创 2022-04-02 23:50:42 · 112 阅读 · 0 评论 -
建造者模式另一种写法
1.介绍建造者模式除了上面的用途外,在开发中还有一个常用的使用方式,就是当一个类构造器需要传入很多参数时,如果创建这个类的实例,代码可读性会非常差,而且很容易引入错误,此时就可以利用建造者模式进行重构。2.重构前的代码:public class Phone { private String cpu; private String screen; private String memory; private String mainboard; p..原创 2022-04-01 12:32:48 · 58 阅读 · 0 评论 -
建造者模式_黑马程序员学习笔记
1.概述将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。 由于实现了构建和装配的解耦。不同的构建器(builder),,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。 建造者模式可以将部件和其组装过程分开,一步一步创建一个.原创 2022-04-01 12:17:26 · 105 阅读 · 0 评论 -
单例模式的破坏和防范
1.介绍用创建单例类(Singleton)的方法可以创建多个对象(枚举方式除外)。有两种方式,可以破坏单例模式,分别是序列化和反射。2.序列化和反序列化破坏单例模式/** * 懒汉式,静态内部类 * @author CharlieLiang * *///序列化要implements Serializablepublic class Singleton implements Serializable{ private Singleton() {}; // 静态内部类.原创 2022-03-31 21:01:52 · 270 阅读 · 0 评论 -
单例模式_黑马程序员学习笔记
Java 创建单例模式的方法介绍原创 2022-03-31 19:47:05 · 3945 阅读 · 1 评论 -
工厂模式_黑马程序员笔记
1.概述需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。具体类的设计如下:实现:不用设计模式咖啡类,抽象类/** * 咖啡类 * * */public abstract class Coffee { public abstract String getName(); //加糖 .原创 2022-03-28 22:27:12 · 282 阅读 · 0 评论