![](https://img-blog.csdnimg.cn/4ef6d7d983b34b3a9ed63c35e4197e89.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 61
23种设计模式
guoyp2126
心上悟,事上磨
展开
-
设计模式复习总结
设计模式概念设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、面向对象代码设计经验的总结。面向对象技术产生是根本目的为了解决软件可维护性问题;设计模式作为面向对象技术代码设计结晶,同样也是服务可维护性这一目标,可扩展和可复用是设计模式主题。学习设计模式,需要了解封装、继承、多态、接口、抽象类等基础内容以及UML等方面的学习。设计模式分类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式;结构型模式,共七种:适配器模式、装饰器模式、代理模式原创 2021-06-01 17:59:09 · 1008 阅读 · 0 评论 -
赖汉式线程安全性测试
使用懒汉式实现单例模式应用时存在线程的安全性,如果不使用同步锁测试一下是否会创建多个实例,代码如下:public class Singleton2 { private static Singleton2 instance = null; private Singleton2() { } public static Singleton2 getInstance() { if (instance == null) { instance原创 2022-03-30 16:17:09 · 634 阅读 · 0 评论 -
预警信息发布程序设计
被观察者代码public class DataConvertor { private List<IObserver> observers = new ArrayList<>(); public void add(IObserver obj){ observers.add(obj); } public void remove(IObserver obj){ observers.remove(obj); }原创 2021-11-09 12:08:16 · 3780 阅读 · 0 评论 -
操作日志——代理模式验证
代理模式主要用途就是能够动态地在方法的前后扩展附加一些新的功能,它能够在不破坏原有类的封装的前提下,增强相应的功能。代理模式是面向切面编程的理论基础,代理模式广泛地应用在软件开发中。代理模式实现方式包括静态代理和动态代理(反射代理和cglib代理),这两种模式都是在被代理对象持有一个被代理对象,通过被代理对象调用代理对象的方法。以下以记录学生活动日志为例,在执行学生类中每个方法后记录该方法的日志记录作为示例,介绍代理模式。原创 2021-10-25 19:16:20 · 1283 阅读 · 2 评论 -
OOD和设计模式的关系
面向对象程序设计(OOD)是建立在对“面向对象”概念、基础知识、面向对象设计原则深入的理解基础,所以在设计前,要熟悉和掌握面向对象的技术;设计模式(Design Pattern)是建立在面向对象设计原则上一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结;设计模式给我们提供了设计时的参考模型,同时可以强化了我们对“面向对象”概念、基础知识及面向对象设计原则的理解和认识。...原创 2021-02-14 15:39:01 · 466 阅读 · 0 评论 -
设计模式之备忘录模式详解
概念我们经常玩实时战略游戏,一般在完成大的战役前,我们会将大战前的信息保存一下,以便挂掉时恢复再来一次。那么我们要保存信息怎么存和怎么对这些信息进行操作,就要用到备忘录模式。备忘录模式独立出来一个数据载体,这个载体就叫备忘录,它记录了某一个时刻系统的特征参数。然后我们将备忘录交给一个管理者进行存储管理,管理者并不明白备忘录各种特征参数的含义。对特征参数的维护由系统内部(游戏程序)一个叫做发起人的对象解析并维护的,发起人是系统内部对象,记录系统每一个时刻的特征值,并能将特征值以备忘录的形式进行存储,而且可以原创 2020-12-01 10:33:17 · 314 阅读 · 0 评论 -
设计模式之命令模式解析
问题导入在现实生活中,命令模式使用的场景很多,如:当我们去餐厅点餐时,我们仅需发出需要菜品的指令,并不关心厨师是谁、怎么做,当然厨师也无需知道是谁点的餐。我们是命令的请求者,厨师是命令的执行者,请求者和执行者之间形成一种松耦合的关系。命令是就是我们具体要的菜品,在一家餐厅中,每一种菜品都会指定一个厨师完成,如:鱼香肉丝有厨师A完成,手撕包菜由厨师B完成。在场景中服务员,完成请求者命令的执行,相当于调用者,调用者也不关心那个厨师完成,只报菜名(命令)即可。这样做的好处,如果餐厅增加新的菜品时,不会影响到原有原创 2020-11-23 10:56:37 · 292 阅读 · 0 评论 -
工厂方法模式和抽象工厂验证示例
工厂方法模式示例开发一个数据格式转换工具,将不同数据源如:txt、excel等格式文件,转换为XML格式输出,需考虑今后其他格式的文件也需要转换为xml格式的扩展性,利用设计模式的有关知识进行设计。解决思路,使用工厂方法模式完成该功能的设计,设计类图如下:代码结构如下:代码如下:public interface Creator { Convertor getConvertor();}public class ExcelConvertorCreator implements Cre原创 2021-09-28 11:01:15 · 1323 阅读 · 3 评论 -
设计模式——工厂模式
依赖倒置原则和里氏替换原则共同构建起面向抽象编程的实现机制,要求我们在写代码时,不再依赖于具体类,而依赖于抽象(基类或接口),将高层调用模块和具体类的耦合转换到程序运行状态去运行,那么运行时具体类是由谁创建的呢?我们说是容器,设计模式中的工程模式就可以看成一个容器。简单工厂模式创建不同的对象最简单的办法,独立出来一个类,让其根据简单参数(String)创建不同具体类对象。如我们需要生产BMW320和BMW523两种对象,我们设计类图如下核心代码为public class RentFactory {原创 2021-03-22 12:23:19 · 452 阅读 · 0 评论 -
建造者模式验证实例
引言创建一个类的实例,我们通常使用类中构造函数来完成对象的初始化,如果一个对象构造过程很复杂,如果将构造过程和对象使用的过程放在一起,就显得这个类很笨重,职责也不单一,最好的解决办法就是将构造过程拿出来单独进行封装,类的使用单独封装一个类就会好很多。如:mybaits中的SqlSessionFactoryBulider和SqlSessionFactory两个类,下图为SqlSessionFactoryBulider和SqlSessionFactory两个类提供的方法。前者职责是根据mybaits的配置文件原创 2021-10-11 17:33:58 · 343 阅读 · 1 评论 -
如何学好设计模式这门课
设计模式是相对于其他工具类和语言类的课程比较抽象难学,而且各个模式之间相对独立,知识碎片化严重,不好归纳和总结。但是设计模式的学习又不是无规律可循,如果抓住了以下几个关键点,不仅能很好的理解各个模式,而且能够实现创新性的给出问题的解决方案。面向对象技术的产生的意图和目的设计模式是在面向对象技术基础上,经过无数次验证代码设计经验的总结。面向对象技术是在第二次软件危机下,为了解决软件的维护性产生的一门技术,设计模式围绕着“扩展和复用”两大主题展开,无论如何变化,均服务这一根本目的。深入的理解这一意图,就不难原创 2021-10-04 13:12:33 · 284 阅读 · 0 评论