设计模式
文章平均质量分 59
小尘_OnMyWay
身若孤鸿,志在天间。
展开
-
观察者模式VS发布订阅模式
1. 观察者模式直观理解观察者模式本质上实现了一种松耦合,当有消息更新时,由被观察者直接调用内部notify()方法,对订阅了该被观测者的观察者一一进行通告update()操作。2. 发布订阅模式直观理解在发布/订阅模式中,拥有一个区别于观察者模式的最重要的角色Broker–也就是消息调度中心,publisher向broker发布各种消息,subscriber则向broker订阅其感兴趣的消息类型。一旦发布者发布了订阅者感兴趣的消息类型,则将其告知订阅者。3. 二者的区别观察者模式实现了模块之原创 2022-03-29 16:38:28 · 189 阅读 · 0 评论 -
设计模式--访问者模式
访问者模式(Visitor),封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。UML结构图如下:其中,Visitor是抽象访问者,为该对象结构中ConcreteElement的每一个类声明一个Visit操作;ConcreteVisitor是具体访问者,实现每个由visitor声明的操作,是每个操作实现算法的一部分,而该算法片段是对应于结构中对象的类;ObjectStructure为能枚举它的元素,可以提供一个高层的接口以允许访问者访问它的元素;Ele原创 2021-07-07 20:55:51 · 63 阅读 · 0 评论 -
设计模式--策略模式
策略模式:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也称为政策模式(Policy)。策略模式把对象本身和运算规则区分开来,其功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性的思想。策略模式的结构:环境类(Context):用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Strategy访问它的数据。抽象策略类(Strategy):定义所有支持的算法的公共接口。原创 2021-07-07 20:48:41 · 100 阅读 · 0 评论 -
设计模式--代理模式
文章目录1. 什么是代理模式2. 代理模式中的角色3. 静态代理4. JDK动态代理5. CGLib代理6. 三种代理区别7. 优缺点8. 使用场景1. 什么是代理模式由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机的不同划分为静态代理和动态代理。静态代理在类编译期就生成了,而动态代理类则在Java运行时动态生成。动态代理又分为JDK代理和CGLib代理。2. 代理模式原创 2021-04-28 10:53:47 · 85 阅读 · 0 评论 -
设计模式--建造者模式
文章目录1. 什么是建造者模式2. 建造者模式中的几个角色3. 案例实现建造者模式4. 建造者模式的优缺点1. 什么是建造者模式将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离部件的构造(Builder负责)和装配(Director负责),来一步步构造出复杂的对象;实现了构建和装配的解耦。2. 建造者模式中的几个角色抽象建造者类(Builder):这个接口规定要实现复杂的对象的那些部件的创建,但不涉及具体的对象部件的创建。具体建造者类(ConcreteBuilder)原创 2021-04-23 22:14:12 · 77 阅读 · 0 评论 -
设计模式--原型模式
文章目录1. 概述2. 结构3. 实现4. 应用场景1. 概述用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。2. 结构抽象原型类:规定了具体原型对象必须实现的clone()方法。具体原型类:实现抽象原型类的clone()方法,它是可被复制的对象。访问类:使用具体原型类中的clone()方法复制新的对象。3. 实现原型模式的克隆分为浅克隆和深克隆。浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的原创 2021-04-23 21:31:18 · 69 阅读 · 0 评论 -
设计模式--工厂模式
文章目录1. 简单工厂模式1. 结构2. 实现3. 优缺点4.扩展--静态工厂2. 工厂方法模式1. 结构2. 实现3. 抽象工厂模式1. 简单工厂模式简单工厂模式并不是一种设计模式,而是一种编程习惯。1. 结构简单工厂中包含以下角色:抽象产品:定义了产品的规范,描述了产品的主要特性和功能。具体产品:实现或继承抽象产品的子类。具体工厂:提供了创建产品的方法,调用者通过该方法来创建产品。2. 实现案例:点咖啡,有一个咖啡店类,一个咖啡抽象类,具体实现类有美式咖啡、拿铁咖啡;并建立一个咖啡原创 2021-04-21 10:03:44 · 128 阅读 · 1 评论 -
设计模式--单例模式
文章目录1. 单例模式的结构2. 单例模式的实现1. 饿汉式2. 懒汉式3. 破坏单例模式情景及解决方式单例模式设计到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。1. 单例模式的结构两个角色:单例类:只能创建一个实例的类访问类:用来测试单例类2. 单例模式的实现单例模式有两种实现方式:饿汉式:类加载时就会导致该单例对象被创建懒汉式:首次使用时该单例对象才会被创建1. 饿汉式静态原创 2021-04-18 22:52:29 · 78 阅读 · 3 评论 -
设计模式--软件设计六大原则
为了提高软件系统的可维护性和可复用性,增加可扩展性和灵活性。我们一般要在软件设计过程中遵循以下六大设计原则:开闭原则里氏代换原则依赖倒转原则接口隔离原则迪米特法则合成复用原则1.开闭原则“对扩展开放,对修改关闭。” 即在程序需要进行功能等扩展的时候,不去修改原有代码。要实现这样的效果,我们需要使用接口和抽象类。例如:搜狗输入法的皮肤设计。搜狗输入法的皮肤可以划分为背景图片、窗口颜色等元素的组合。我们可以手动的修改其皮肤。而这些皮肤具有相同的特点和属性,可以将其定义为一个抽象类Abs原创 2021-04-14 22:09:10 · 415 阅读 · 0 评论 -
设计模式--UML类图表示
1.UML概述统一建模语言(Unified Modeling Language)是用来设计软件的可视化建模语言,特点是简单、统一、图形化,能表达软件设计中的动态与静态信息。从目标系统的不同角度出发,定义了例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图九种图。2.类图1.概述类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及他们与其他类的关系等。2.作用类图描述了系统的类的集合,类的属性和类之间的关系,可以简化人们对系统的理解。原创 2021-04-14 21:27:43 · 313 阅读 · 0 评论 -
设计模式--概述
1.概述软件设计模式简称设计模式,是一套被反复使用、多数人知晓、经过分类编排的、代码设计经验的总结。它描述了一系列软件设计中出现的不断重复发生的问题,以及该问题的解决方案。设计模式是解决特定问题的套路/解决方案,是前辈的代码经验的总结,具有普遍适用性。设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性、多态性及类的关联关系和组合关系的充分理解。2.分类创建型模式用于描述“如何创建对象”,主要特点是“将对象的创建和使用分离”。包括5种模式:单例、原型、工厂方法、抽象工厂、建造者原创 2021-04-14 20:54:17 · 56 阅读 · 0 评论