![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 89
Circ.
Actions count, and actions always speak louder than words.
展开
-
装饰模式学习
1、书上的超人是谁?是ConcreteComponent类的子类还是和这个类是同一层级的???2、图上的聚合关系是如何进行体现的3、哪里叫内部组装?4、实现和使用分离式如何体现的呢???原创 2023-11-29 20:08:57 · 621 阅读 · 0 评论 -
享元模式学习
可以极大减少内存中对象的数量,使得相同或相似对象在内存中只保存一份,从而可以节约系统资源,提高系统性能。享元模式的外部状态相对独立,而且不会影响其内部状态,从而使得享元对象可以在不同的环境中被共享。享元模式的主要缺点如下:享元模式使得系统变得复杂,需要分离出内部状态和外部状态,这使得程序的逻辑复杂化。为了使对象可以共享,享元模式需要将享元对象的部分状态外部化,而读取外部状态将使得运行时间变长。原创 2023-11-20 09:54:36 · 397 阅读 · 0 评论 -
桥接模式学习
这个桥接模式最深刻的一个点是:将源码定义好的关系修改为运行时在客户端中指定关系。解开源码定义好的类之间的耦合,变成运行的时候才让类之间耦合起来。这样我现在如果想要增加一个功能,比如音乐播放器,那么只有增加这个类就可以了,不会影响到其他任何类,类的个数增加也只是一个;如果是要增加S品牌,只需要增加一个品牌的子类就可以了,个数也是一个,不会影响到其他类。这显然符合开放-封闭原则。而这里用到的合成/聚合复用原则是一个很有用处的原则,即优先使用对象的合成或聚合,而不是继承。原创 2023-11-20 09:32:35 · 267 阅读 · 2 评论 -
打败全国百分之99.99的模板方法模式讲解
定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法是的子类可以不改变一个算法的结构即可重定义改算法的某些特定步骤。从版本1开始,我们一步步增加灵活性,多维度思考,主要围绕复用扩充维护三方面考虑,代码越来越灵活。原创 2023-09-15 09:50:12 · 133 阅读 · 0 评论 -
设计模式之策略模式
策略模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时选择算法的不同实现,并将其封装在独立的策略类中。这样可以使得算法的变化独立于使用它们的客户端。策略模式通过定义一系列算法,然后将其封装在各自的类中,使得这些算法可以相互替换,以满足不同的需求,同时不影响客户端的代码。策略模式的主要参与者包括:Context(上下文):上下文是客户端与策略之间的桥梁。它持有一个策略对象的引用,并在运行时切换不同的策略。上下文根据不同的情况或条件选择适当的策略进行调用。原创 2023-08-07 10:25:29 · 1149 阅读 · 0 评论 -
设计模式入门-工厂系列(保姆级教程)
不管是面向过程,还是面向函数,还是面向对象编程,都只是一种设计思想,没有好坏之分,使用面向对象的思想设计我们的系统维护起来更方便。拿工厂这一步步的变化来说,我发现我们都是要以人为本,这个人可以是开发人员,也可以是系统的使用者,比如,开始一版的时候我们着眼于开发人员,我们希望我们写的代码能让开发人员读代码更方便,所以我们要规范命名,再到后来的加trycatch,是为了方便开发人员捕获异常然后进行处理,同时不会让系统崩溃,给用户造成困扰。原创 2023-03-25 10:34:55 · 339 阅读 · 0 评论 -
java自动生成类热加载(注册和扫描)
代码分为三种源码字节码机器码我们可以通过改变源码的方式去操纵机器码,这也是实现自动化的关键。原创 2023-03-22 10:32:57 · 211 阅读 · 0 评论 -
设计模式 - 外观模式
什么是外观模式?定义了一个高层、统一的接口,外部与通过这个统一的接口对子系统中的一群接口进行访问。通过创建一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以通过调用外观类的方法来调用内部子系统中所有方法解决问题● 避免了系统与系统之间的高耦合度● 使得复杂的子系统用法变得简单结构图注意点从客户程序的角度来看,Facade模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果——内部子系统的任何变化不会影响到Façade接口的变化原创 2022-04-16 21:11:35 · 4002 阅读 · 14 评论 -
设计模式 - 装饰模式
什么是装饰模式?装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。适用范围动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。不改变接口的前提下,增强所考虑的类的性能。何时使用:1)需要扩展一个类的功能,或给一个类增加附加责任。2)需要动态的给一个对象增加功能,这些功能可以再动态地撤销。3)需要增加一些基本功能的排列组合而产生的非常大量的功能,从而使继承变得 不现实。角色构成原创 2022-04-16 09:19:08 · 4151 阅读 · 14 评论 -
设计模式-桥接模式
使用场景“抽象部分”和“实现部分”可以以继承的方式独立扩展而互不影响,在程序运行时可以动态将一个抽象化子类的对象和一个实现化子类的对象进行组合,即系统需要对抽象化角色和实现化角色进行动态耦合。一个类存在两个(或多个)独立变化的维度,且这两个(或多个)维度都需要独立进行扩展。对于那些不希望使用继承或因为多层继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。角色● 抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。● 修正抽象化(Refined原创 2022-04-16 09:12:24 · 3943 阅读 · 14 评论 -
设计模式-适配器模式
定义是什么?将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。优点该模式的主要优点如下。● 客户端通过适配器可以透明地调用目标接口。● 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。● 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。● 在很多业务场景中符合开闭原则。原创 2022-04-16 09:05:12 · 4029 阅读 · 14 评论 -
设计模式 - 原型模式
原型模式是什么原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。在生活中复制的例子非常多,这里不一一列举了。使用情景:首先从实际生活来了解原型模式的由来,假设你有一份非常好的讲义,你的朋友也想要一份,那么怎么办?重新手抄一份?显然不是,当然是用复印机复印一份来得方原创 2022-04-14 21:35:05 · 4485 阅读 · 8 评论 -
设计模式 - 建造者模式
什么是建造者模式建造者模式也称生成器模式 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(依赖倒转)建造者模式的四个角色1)Product(产品角色): 一个具体的产品对象。2)Builder(抽象建造者): 创建一个 Product 对象的各个部件指定的 接口/抽象类。3)ConcreteBuilder(具体建造者): 实现接口,构建和装配各个部件。4)Director(指挥者): 构建一个使用 Builder 接口的对象。它主要是用于创建一个复杂的对象。它主要原创 2022-04-14 21:25:48 · 4009 阅读 · 10 评论 -
设计模式- 抽象工厂模式
N+1假设目前你的程序里面有三个对象IphoneX、IphoneXs、IphoneXR的尺寸,那么你使用工厂模式就已经足够了,因为她们属于同一个品类,都属于苹果,如果在添加一个IPhone2022产品,也只需要把IPhone2022加入到你的苹果工厂里面就够了。但是如果你程序里面还需要知道华为mate10或者小米8的尺寸。这时候你怎么来创建这些对象呢?这时候工厂模式明显已经不适用了,因为工厂模式是对象都实现了同一个接口,这时候就可以使用抽象工厂模式了。抽象工工厂模式和工厂模式的区别:抽象工厂模式的定原创 2022-04-14 21:10:53 · 4168 阅读 · 9 评论 -
设计模式 - 工厂方法模式
什么是工厂方法?工厂方法模式(Factory Method Pattern),也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。优点:在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类原创 2022-04-14 20:51:15 · 811 阅读 · 9 评论 -
面向对象七大设计原则,看了必会(代码详细版)
咱们首先了解一个单词solid这个单词和咱们今天要讲述的七大原则有什么关系?咱们首先要了解七大原则都有什么?单一职责原则 (Single Responsibility Principle)开放-关闭原则 (Open-Closed Principle)里氏替换原则 (Liskov Substitution Principle)接口隔离原则 (Interface Segregation Principle)依赖倒转原则 (Dependence Inversion Principle)迪米特法原创 2022-04-04 20:18:49 · 1336 阅读 · 5 评论