![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
gof
还没秃的小菜鸡
头发阻挡了我对知识的吸收
展开
-
观察者模式
定义观察者模式(Observer Pattern)定义了对象之间的一对多依赖,让多个观察者对象同 时监听一个主体对象,当主体对象发生变化时,它的所有依赖者(观察者)都会收到通 知并更新,属于行为型模式。观察者模式有时也叫做发布订阅模式。观察者模式主要用 于在关联行为之间建立一套触发机制的场景。UML图观察者模式包含如下角色:Subject: 目标ConcreteSubject: 具体目标Observer: 观察者ConcreteObserver: 具体观察者例子创建 GPer 类:原创 2020-09-07 16:53:10 · 72 阅读 · 0 评论 -
装饰者模式
定义装饰者模式(Decorator Pattern)是指在不改变原有对象的基础之上,将功能附加到对 象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能),属于结构型模式。装饰者在代码程序中适用于以下场景:1、用于扩展一个类的功能或给一个类添加附加职责。2、动态的给一个对象添加功能,这些功能可以再动态的撤销。UML图:一般来说装饰者模式有下面几个参与者:Component:装饰者和被装饰者共同的父类,是一个接口或者抽象类,用来定义基本行为ConcreteComponent:定义具体对原创 2020-09-07 15:14:28 · 75 阅读 · 0 评论 -
适配器模式
定义适配器模式(Adapter Pattern)是指将一个类的接口转换成客户期望的另一个接口,使 原本的接口不兼容的类可以一起工作,属于结构型设计模式。适配器适用于以下几种业务场景:1、已经存在的类,它的方法和需求不匹配(方法结果相同或相似)的情况。2、适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不 同厂家造成功能类似而接口不相同情况下的解决方案。模式结构适配器模式包含如下角色:Target:目标抽象类Adapter:适配器类Adaptee:适配者类Clie原创 2020-09-04 15:57:08 · 223 阅读 · 0 评论 -
模板模式
定义模板模式通常又叫模板方法模式(Template Method Pattern)是指定义一个算法的骨架,并允许子类为一个或者多个步骤提供实现。模板方法使得子类可以在不改变算法结 构的情况下,重新定义算法的某些步骤,属于行为性设计模式。适用场景:1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。2、各子类中公共的行为被提取出来并集中到一个公共的父类中,从而避免代码重复。案例NetworkCourse 抽象类:public abstract class NetworkCourse原创 2020-09-03 15:47:55 · 129 阅读 · 0 评论 -
策略模式
定义完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。在软件开发中也常常遇到类似的情况,实现某一个功能有多个途径,此时可以使用一种设计模式来使得系统可以灵活地选择解决途径,也能够方便地增加新的解决途径。在软件系统中,有许多算法可以实现某一功能,如查找、排序等,一种常用的方法是硬编码(HardCoding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当原创 2020-09-02 15:58:22 · 85 阅读 · 0 评论 -
委派模式
定义委派模式(Delegate Pattern ) 又叫委托模式, 是一种面向对象的设计模式, 允许对象组合实现与 继承相同的代码重用。它的基本作用就是负责任务的调用和分配任务, 是一种特殊的静态代理, 可以理 解为全权代理, 但是代理模式注重过程,而委派模式注重结果。委派模式属于行为型模式, 不属于GO F 23 种设计模式中。先来看一下类图:从类图中我们可以看到, 委派模式有三个参与角色:抽象任务角色( Task ) : 定义一个抽象接口, 它有若干实现类。委派者角色( Delegate )原创 2020-09-02 15:09:15 · 145 阅读 · 0 评论 -
代理模式
静态代理举个例子:人到了适婚年龄,父母总是迫不及待希望早点抱孙子。而现在社会的人在各 种压力之下,都选择晚婚晚育。于是着急的父母就开始到处为自己的子女相亲,比子女 自己还着急。这个相亲的过程,就是一种我们人人都有份的代理。来看代码实现:顶层接口 Person:public interface Person { void findLove();}儿子要找对象,实现 Son 类:public class Son implements Person { public void原创 2020-09-01 16:35:25 · 153 阅读 · 0 评论 -
单例模式
单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并 提供一个全局访问点。饿汉式单例饿汉式单例是在类加载的时候就立即初始化,并且创建单例对象。绝对线程安全,在线 程还没出现以前就是实例化了,不可能存在访问安全问题。优点:没有加任何的锁、执行效率比较高,在用户体验上来说,比懒汉式更好。缺点:类加载的时候就初始化,不管用与不用都占着空间,浪费了内存,有可能占着茅 坑不拉屎。public class HungrySingleton { //static静原创 2020-08-28 11:24:59 · 144 阅读 · 0 评论 -
工厂模式
先来看个案例定义一个课程标准 ICourse 接口:public interface ICourse { void record();}创建一个 Java 课程的实现 JavaCourse 类:public class JavaCourse implements ICourse { public void record() { System.out.println("录制java课程"); }}看客户端调用代码,我们会这样写:publ原创 2020-08-27 11:08:04 · 99 阅读 · 0 评论 -
代码设计原则
开闭原则用抽象构建框架,用实现扩展细节,面向抽象编程依赖倒置原则调用层不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节;细节应该依赖抽象,依赖注入单一原则是指不要存在多于一个导致类变更的原因。假设我们有一个 Class 负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能会导致另一个职责的功能发生故障。这样一来,这个 Class 存在两个导 致类变更的原因。如何解决这个问题呢?我们就要给两个职责分别用两个 Class 来实现,进行解耦。后期需求变更维护互不影..原创 2020-08-26 16:21:06 · 2620 阅读 · 0 评论