![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 57
你好y
这个作者很懒,什么都没留下…
展开
-
模版方法模式
模版方法模式就是我们做一件事情是有清晰的步骤,但可能中间的某个步骤的具体内容因人而异,将这个不确定的步骤的实现放到子类去实现。例如我们去ktv唱歌,步骤都是先服务员领着我们去房间,然后我们点歌,之后付账。但是每个顾客点的歌肯定是不一样的,所以对于这个操作我们就可以将它放到子类具体的某个顾客去实现。我们的模版方法就是进房间、点歌、付账。模版方法模式就是将不变的行为搬移到超类,去除子类中的重复代码来体现它的优势模版方法模式就是提供一个很好的代码复用平台。原创 2023-03-12 15:06:32 · 69 阅读 · 0 评论 -
大话设计模式-原型模式
原型模式主要就是浅复制和深复制的区别。一个类A中都是一些基础类型的话,将类A实现接口ICloneable, 就可以实现类A的复制,但是如果类A中有其他类的引用,例如对类B的引用。再使用上面的浅复制就不行了。因为类B在类A中的复制就是引用复制,实际指向的还是同一个对象。原创 2023-03-12 15:07:28 · 90 阅读 · 0 评论 -
简单工厂模式与工厂模式的区别
以下内容为看《大话设计模式》的学习笔记从一个简单的例子引入:学习雷锋做好事。雷锋是一个称号,不同的人群都可以成为雷锋,例如学生、志愿者等工厂方法克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点它们都是集中封装了 对象的创建,使得更换对象时,不需要做大的改动就可以实现,降低客户程序与产品对象的耦合思考:使用简单工厂和工厂模式分别实现计算器。原创 2023-03-12 15:04:46 · 161 阅读 · 0 评论 -
大话模式学习笔记(简单工厂模式、策略模式、单一职责)
最近在看《大话设计模式》,做一点总结总结吧。之前也进行学习过设计模式,但是都是讲该设计模式是什么,包含哪些元素,再配合一点简单的demo,理解很不深刻。最近又重新学一下。原创 2023-02-17 16:21:39 · 379 阅读 · 0 评论 -
装饰者模式
装饰者模式1 概述我们先来看一个快餐店的例子。快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。使用继承的方式存在的问题:扩展性不好如果要再加一种配料(火腿肠),我们就会发现需要给FriedRice和FriedNoodles分别定义一个子类。如果要新增一个快餐品类(炒河粉)的话,就需要定义更多的子类。产生过多的子类定义: 指在不改变现有对象结构的情况下,动态地给该对象增加一些职责原创 2022-01-23 21:32:43 · 99 阅读 · 0 评论 -
适配器模式
适配器模式1 概述如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。生活中这样的例子很多,手机充电器(将220v转换为5v的电压),读卡器等,其实就是使用到了适配器模式。定义: 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式分为类适配器原创 2022-01-23 20:57:45 · 73 阅读 · 0 评论 -
观察者模式
观察者模式1 概述定义:又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。2 结构在观察者模式中有如下角色:Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。ConcreteSubject:具体主题(具体被观察者),该角原创 2022-01-23 17:52:22 · 87 阅读 · 0 评论 -
设计模式--工作线程
异步模式之工作线程I.定义让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务。也可以将其归类为分工模式,它的典型实现就是线程池,也体现了经典设计模式中的享元模式(重用对象)。例如,海底捞的服务员(线程),轮流处理每位客人的点餐(任务),如果为每位客人都配一名专属的服务员,那么成本就太高了(对比另- 种多线程设计模式: Thread-Per-Message 来一个消息创建一个线程)注意,不同任务类型应该使用不同的线程池,这样能够避免饥饿,并能提升效率例如,如果-一个餐馆的原创 2021-10-17 11:05:28 · 281 阅读 · 0 评论 -
设计模式--犹豫模式
同步模式之BalkingBalking (犹豫) 模式用在一个线程发现另-个线程或本线程已经做了某- -件相同的事, 那么本线程就无需再做了,直接结束返回调用一次监控线程,就创建一个监控线程,没有意义,一个监控线程就可以了。怎么保证一个方法只被执行一次,下次调用就直接返回呢?在上篇代码基础上,增加一个变量加以判断...原创 2021-10-09 15:02:58 · 138 阅读 · 0 评论 -
两阶段终止模式--volatile(让一个线程优雅的终止)
两阶段终止模式–volatile代码:package demo1;public class StopXiancheng { public static void main(String[] args) throws InterruptedException { TwoPhaseTermination tpt=new TwoPhaseTermination(); tpt.start(); Thread.sleep(3500);原创 2021-10-09 14:39:51 · 113 阅读 · 0 评论 -
单例模式
懒汉式 线程不安全package Test;public class Singleton { //懒汉式,线程不安全 private static Singleton instance; private Singleton(){} public static Singleton getInstance(){ if(instance==null){ instance=new Singleton(); }转载 2021-09-26 09:07:59 · 65 阅读 · 0 评论