![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 93
carroll18
你想要拥有你从未有过的东西,你必须去做你从未做过的事情。
展开
-
设计模式与范式:行为型(六)
文章目录命令模式命令模式的原理命令模式 VS 策略模式解释器模式解释器模式的原理和实现中介模式中介模式的原理和实现中介模式 VS 观察者模式3个模式,它们分别是:命令模式、解释器模式、中介模式。这 3 个模式使用频率低、理解难度大,只在非常特定的应用场景下才会用到,所以,不是学习的重点,只需要稍微了解,见了能认识就可以了。命令模式命令模式的英文翻译是 Command Design Pattern。在 GoF 的《设计模式》一书中,它是这么定义的:The command pattern encap原创 2021-11-09 15:47:46 · 236 阅读 · 0 评论 -
设计模式与范式:行为型(五)
文章目录访问者模式访问者模式的原理和代码实现访问者模式的应用场景为什么支持双分派的语言不需要访问者模式?备忘录模式备忘录模式的原理与实现如何优化内存和时间消耗?原创 2021-11-09 15:46:04 · 218 阅读 · 0 评论 -
设计模式与范式:行为型(四)
文章目录状态模式状态模式什么是有限状态机?状态机实现方式迭代器模式迭代器模式的原理和实现迭代器模式的优势在遍历的同时增删集合元素会发生什么?原创 2021-11-08 16:49:09 · 2084 阅读 · 0 评论 -
设计模式与范式:行为型(三)
文章目录职责链模式职责链模式的原理和实现Servlet FilterSpring Interceptor职责链模式职责链模式的英文翻译是 Chain Of Responsibility Design Pattern。在 GoF 的《设计模式》中,它是这么定义的:Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chai原创 2021-11-07 22:36:34 · 102 阅读 · 0 评论 -
设计模式与范式:行为型(二)
文章目录模板模式模板模式的原理与实现模板模式作用回调的原理解析模板模式 VS 回调策略模式策略模式的原理与实现策略模式的作用模板模式模板模式,全称是模板方法设计模式,英文是 Template Method Design Pattern。在 GoF 的《设计模式》一书中,它是这么定义的:Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets原创 2021-11-05 18:30:50 · 183 阅读 · 0 评论 -
设计模式与范式:行为型(一)
文章目录观察者模式观察者模式原理和实现异步非阻塞观察者模式的简易实现EventBus 框架创建型设计模式主要解决“对象的创建”问题,结构型设计模式主要解决“类或对象的组合或组装”问题,那行为型设计模式主要解决的就是“类或对象之间的交互”问题。行为型设计模式比较多,有 11 个,几乎占了 23 种经典设计模式的一半。它们分别是:观察者模式、模板模式、策略模式、职责链模式、状态模式、迭代器模式、访问者模式、备忘录模式、命令模式、解释器模式、中介模式。观察者模式观察者模式(Observer De原创 2021-11-05 15:23:21 · 224 阅读 · 0 评论 -
设计模式与范式:结构型(三)
文章目录门面模式门面模式的原理与实现门面模式的应用场景举例组合模式组合模式的原理与实现享元模式享元模式原理与实现享元模式 vs 单例、缓存、对象池享元模式在Java中的应用门面模式门面模式的原理与实现门面模式,也叫外观模式,英文全称是 Facade Design Pattern。在 GoF 的《设计模式》一书中,门面模式是这样定义的:Provide a unified interface to a set of interfaces in a subsystem. Facade Pattern de原创 2021-11-04 18:29:36 · 197 阅读 · 0 评论 -
设计模式与范式:结构型(二)
文章目录桥接模式桥接模式桥接模式,也叫作桥梁模式,英文是 Bridge Design Pattern。桥接模式是这么定义的:“Decouple an abstraction from its implementation so that the two can vary independently。”翻译成中文就是:“将抽象和实现解耦,让它们可以独立变化。”...原创 2021-11-04 16:28:51 · 159 阅读 · 0 评论 -
设计模式与范式:结构型(一)
文章目录代理模式代理模式的原理解析动态代理的原理解析代理模式的应用场景结构型模式主要总结了一些类或对象组合在一起的经典结构,这些经典的结构可以解决特定应用场景的问题。结构型模式包括:代理模式、桥接模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式。代理模式代理模式(Proxy Design Pattern):它在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。代理模式的原理解析这个例子实现的性能计数器。当时我们开发了一个 MetricsCollecto原创 2021-11-02 18:46:34 · 230 阅读 · 0 评论 -
设计模式与范式:创建型(三)
文章目录建造者模式为什么需要建造者模式?建造者模式与工厂模式有何区别?什么时候使用建造者模式?原型模式原型模式的原理与应用原型模式的结构与实现原型模式的实现方式:深拷贝和浅拷贝建造者模式Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。为什么需要建造者模式?假设有这样一道设计面试题:我们需要定义一个资源池配置类 ResourcePoolConfig。这里的资源池,你可以简单理解为线程池、连接池、对象池等。在这个资源池配置类中,有以下几个成员变量,也就是可配置项。现原创 2021-11-02 15:54:43 · 155 阅读 · 0 评论 -
设计模式与范式:创建型(二)
文章目录工厂模式简单工厂(Simple Factory)工厂方法(Factory Method)抽象工厂(Abstract Factory)工厂模式一般情况下,工厂模式分为三种更加细分的类型:简单工厂、工厂方法和抽象工厂。在 GoF 的《设计模式》一书中,它将简单工厂模式看作是工厂方法模式的一种特例,所以工厂模式只被分成了工厂方法和抽象工厂两类。简单工厂(Simple Factory)为了让类的职责更加单一、代码更加清晰,我们还可以进一步将 createParser() 函数剥离到一个独立的类原创 2021-11-02 11:55:45 · 149 阅读 · 0 评论 -
设计模式与范式:创建型(一)
文章目录单例模式单例的实现饿汉式懒汉式双重检测静态内部类枚举单例存在哪些问题?单例有什么替代解决方案?如何理解单例模式中的唯一性?如何实现线程唯一的单例?如何实现集群环境下的单例?如何实现一个多例模式?单例模式一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。单例的实现概括起来,要实现一个单例,需要关注的下面几个:构造函数需要是 private 访问权限的,这样才能避免外部通过 new 创建实例;考虑对象创建时的线程安全问题;考原创 2021-11-01 17:30:00 · 196 阅读 · 0 评论 -
设计模式之设计原则与思想:规范与重构(二)
文章目录编程规范命名注释代码风格编程技巧如何发现代码质量问题程序出错编程规范编码规范的三个部分:命名与注释(Naming and Comments)、代码风格(Code Style)和编程技巧(Coding Tips)。命名命名多长最合适?在足够表达其含义的情况下,命名当然是越短越好。但是,大部分情况下,短的命名都没有长的命名更能达意。对于一些默认的、大家都比较熟知的词,比较推荐用缩写。这样一方面能让命名短一些,另一方面又不影响阅读理解,比如,sec 表示 second、str 表示 s原创 2021-10-29 17:48:53 · 142 阅读 · 0 评论 -
设计模式之设计原则与思想:规范与重构(一)
文章目录重构重构的目的重构的对象重构的时机重构的方法单元测试什么是单元测试?为什么要写单元测试?如何编写单元测试?代码的可测试性什么是代码的可测试性?编写可测试性代码的最有效手段常见的 Anti-Patterns解耦“解耦”为何如此重要?代码是否需要“解耦”?如何给代码“解耦”?重构重构的目的软件设计大师 Martin Fowler 是这样定义重构的:“重构是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,使其更易理解,修改成本更低。”重构:在保持功能不变的前提下,利用设计思想、原原创 2021-10-29 15:53:54 · 216 阅读 · 0 评论 -
设计模式之设计原则与思想:设计原则(二)
文章目录KISS 原则YAGNI 原则DRY 原则代码复用性(Code Reusability)何为“高内聚、松耦合”?迪米特法则(LOD)原创 2021-10-28 23:14:38 · 291 阅读 · 0 评论 -
设计模式之设计原则与思想:设计原则(一)
文章目录SOLID 原则单一职责原则(SRP)开闭原则(OCP)里式替换原则(LSP)接口隔离原则(ISP)依赖反转原则(DIP)控制反转(IOC)依赖注入(DI)依赖注入框架(DI Framework)依赖反转原则(DIP)SOLID 原则SOLID 原则,实际上,SOLID 原则并非单纯的 1 个原则,而是由 5 个设计原则组成的,它们分别是:单一职责原则、开闭原则、里式替换原则、接口隔离原则和依赖反转原则,依次对应 SOLID 中的 S、O、L、I、D 这 5 个英文字母。单一职责原则(SR原创 2021-10-28 18:19:45 · 198 阅读 · 0 评论 -
设计模式之设计原则与思想:面向对象(二)
文章目录什么是抽象类和接口?区别在哪里?什么是抽象类和接口?区别在哪里?抽象类具有哪些特性,总结了下面三点:抽象类不允许被实例化,只能被继承。也就是说,你不能 new 一个抽象类的对象出来(Logger logger = new Logger(…); 会报编译错误)。抽象类可以包含属性和方法。方法既可以包含代码实现(比如 Logger 中的 log() 方法),也可以不包含代码实现(比如 Logger 中的 doLog() 方法)。不包含代码实现的方法叫作抽象方法。子类继承抽象类,必须实现抽象原创 2021-10-28 17:04:21 · 156 阅读 · 0 评论 -
设计模式之设计原则与思想:面向对象(一)
文章目录什么是面向对象编程和面向对象编程语言?什么是面向对象分析和面向对象设计?封装(Encapsulation)抽象(Abstraction)继承(Inheritance)多态(Polymorphism)什么是面向过程编程与面向过程编程语言?面向对象编程相比面向过程编程有哪些优势?哪些代码设计看似是面向对象,实际是面向过程的?什么是面向对象编程和面向对象编程语言?面向对象编程的英文缩写是 OOP,全称是 Object Oriented Programming。面向对象编程语言的英文缩写是 OOPL,原创 2021-10-27 18:08:13 · 172 阅读 · 0 评论 -
设计模式之基础概念与知识框架
文章目录代码质量最常用的评价标准有哪几个?如何才能写出高质量的代码?面向对象设计原则设计模式编程规范代码重构面向对象、设计原则、设计模式、编程规范和代码重构五者之间的联系“思从深而行从简,真正的高手能云淡风轻地用最简单的方法解决最复杂的问题。”代码质量最常用的评价标准有哪几个?可维护性(maintainability)落实到编码开发,所谓的“维护”无外乎就是修改 bug、修改老的代码、添加新的代码之类的工作。所谓“代码易维护”就是指,在不破坏原有代码设计、不引入新的 bug 的情况下,能够快速原创 2021-10-27 18:07:34 · 166 阅读 · 0 评论 -
结构型设计模式:代理模式(Proxy Pattern)
文章目录什么是动态代理?案例引出使用动态代理优化代码重点类和方法总结什么是动态代理?动态代理简单来说是:拦截对真实对象方法的直接访问,增强真实对象方法的功能动态代理详细来说是:代理类在程序运行时创建的代理对象被称为动态代理,也就是说,这种情况下,代理类并不是在Java代码中定义的,而是在运行时根据我们在Java代码中的“指示”动态生成的。也就是说你想获取哪个对象的代理,动态代理就会动态...原创 2020-04-27 08:54:30 · 272 阅读 · 0 评论 -
8种单例设计模式
单例模式有八种方式:饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全,同步方法)懒汉式(线程安全,同步代码块)双重检查静态内部类枚举//饿汉式(静态变量)class Singleton { //1. 构造器私有化, 外部能new private Singleton() { } //2.本类内部创建对象实例 private f...原创 2020-04-27 08:52:49 · 214 阅读 · 0 评论 -
行为型设计模式:模板模式(Template Pattern)
定义:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根...原创 2020-04-08 09:07:03 · 201 阅读 · 0 评论 -
创建型设计模式:单例设计(Singleton Pattern)
目录什么是设计模式?什么是单例设计模式?单例设计模式特点单例设计模式优点Java实现单例模式饿汉式单例懒汉式单例适用场景单例模式注意事项什么是设计模式?设计模式:是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。通俗来讲就是之前很多程序员经常无数次的尝试,总结出来一套最佳实践什么是单例设计模式?通过单例模式可以保证系统中,应用该...原创 2019-11-20 00:33:03 · 327 阅读 · 0 评论