
设计模式
文章平均质量分 86
Nice2cu_Code
立志成为一个前端、后端、测试全方位发展的程序员
展开
-
软件设计的七大原则
软件设计原则文章目录软件设计原则一、开闭原则二、里氏代换原则三、依赖倒转原则四、接口隔离原则五、迪米特法则六、合成复用原则七、单一职责原则一、开闭原则对扩展开放,对修改关闭。在程序需要进行扩展的时候,不能去修改原有的代码,想要达到这样的效果,需要使用接口和抽象类。软件中易变的细节可以从抽象派生的实现类中进行扩展,当软件需要发生变化时,只需要根据需求重新派生一个实现类即可。举例:【例】搜狗输入法的皮肤设计分析:皮肤是搜狗输入法(SouGouInput)的属性,用户可以根据自己的喜爱更换输入法的皮原创 2021-06-25 10:12:24 · 321 阅读 · 0 评论 -
UML类图介绍
文章目录UML类图一、类图概述二、类图的作用三、类图表示法1. 类的表示方式2. 类与类之间关系的表示方式2.1 关联关系2.2 聚合关系2.3 组合关系2.4 依赖关系2.5 继承关系2.6 实现关系UML类图一、类图概述类图显示了模型中存在的类、类的内部结构以及它们与其他类的关系二、类图的作用类图描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解三、类图表示法1. 类的表示方式在UML类图中,类使用包含类名、属性和方法且带有分割线的矩形来表示比如下图表示一个Emp原创 2021-06-24 10:37:37 · 14170 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式文章目录观察者模式一、定义和结构1. 定义2. 结构二、代码实现三、优缺点1. 优点2. 缺点一、定义和结构1. 定义观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。又被称为发布-订阅(Publish/Subscribe)模式。2. 结构在观察者模式中有如下角色:抽象主题:把所有观察者对象保存在一个集合里(发生变化时可以遍历集合中的观察者进行通知),每个主题都可以有任意数量的观原创 2021-05-27 10:01:17 · 328 阅读 · 0 评论 -
设计模式之策略模式
策略模式文章目录策略模式一、概述二、定义和概述1. 定义2. 结构三、代码实现四、优缺点1. 优点2. 缺点一、概述作为一名开发人员,开发需要选择一款开发工具,可以进行代码开发的工具有很多,可以选择Idea进行开发,也可以使用eclipse进行开发,也可以使用其他的一些开发工具。各种开发工具可以相互替换,不会影响最终要把项目完成的目的,这就应用了策略模式。二、定义和概述1. 定义策略模式定义了一系列算法,并将每个算法封装起来(上述不同的开发工具),使它们可以相互替换,且算法的变化不会影响使用算法原创 2021-05-26 10:11:44 · 209 阅读 · 2 评论 -
设计模式之模板方法模式
模板方法模式文章目录模板方法模式一、概述二、定义和结构1. 定义2. 结构三、代码实现四、优缺点1. 优点2. 缺点一、概述程序设计常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。比如,炒菜的步骤是固定的,分为倒油、热油、倒蔬菜、倒调料品、翻炒等步骤,其中倒油、热油、翻炒对每位厨师是一样的,可以在父类中实现,但是倒蔬菜、倒调料品却因品种不同而异,它可能是包菜 / 菜心、辣椒 / 蒜蓉等,可以延原创 2021-05-25 09:28:08 · 265 阅读 · 0 评论 -
设计模式之装饰者模式
装饰者模式文章目录装饰者模式一、概述二 、定义和结构1. 定义2. 结构三、代码实现一、概述举一个快餐店的例子,快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦,一种基本的设计理念如下述的UML类图所示:FastFood 抽象类的 cost 方法是抽象的,由子类具体实现(每种产品的价格都不同)这种继承方式存在的问题:扩展性不好如果要再加一种配料(火腿肠),就需要给 FriedRice 和 F原创 2021-05-24 09:36:30 · 187 阅读 · 0 评论 -
设计模式之适配器模式(类适配器、对象适配器、接口适配器)
适配器模式文章目录适配器模式一、概述二、定义和结构1. 定义2. 结构三、类适配器模式四、对象适配器模式五、接口适配器模式六、适用场景一、概述如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边所示,因此我们的笔记本电脑、手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。这就是适配器模式的思想。二、定义和结构1. 定义适配器模式是指将一个类的接口转换成另外一个接口,使得原本由原创 2021-05-21 08:36:13 · 838 阅读 · 0 评论 -
设计模式之代理模式(JDK动态代理、CGLIB动态代理)
代理模式文章目录代理模式一、概述二、结构三、静态代理1. 案例说明2. 代码实现四、JDK动态代理1. 代码实现2. 底层原理五、CGLIB动态代理1. 代码实现2. 底层原理六、三种代理模式的对比1. JDK代理和CGLIB代理2. 动态代理和静态代理七、代理模式使用场景一、概述由于某些原因需要给某对象提供一个代理以控制访问者对该对象的访问,这样,访问对象不能直接访问目标对象,代理对象作为访问对象和目标对象之间的中介,可以降低代码的耦合度并且保护了目标对象。比如买房者不能直接访问售房者,售房中介充原创 2021-05-20 09:49:26 · 342 阅读 · 1 评论 -
设计模式之工厂模式(简单工厂、工厂方法、抽象工厂模式)
工厂模式文章目录工厂模式一、前言二 、简单工厂模式1. 结构2. 实现3. 静态工厂三、工厂方法模式1. 结构2. 实现四、抽象工厂模式1. 结构2. 实现五、工厂模式 + 反射 + 配置文件解除耦合六、JDK中使用工厂模式的类一、前言需要设计一个咖啡店点餐系统,需要创建的类有:咖啡类(Coffee)子类美式咖啡(AmericanCoffee)子类拿铁咖啡(LatteCoffee)咖啡店类(CoffeeStore)具有点餐功能(orderCoffee)具体的UML类图如下所原创 2021-05-19 10:10:30 · 575 阅读 · 0 评论 -
设计模式之单例模式的八种实现方式
阅读本文章之前需要了解序列化、枚举、指令重排和volatile,传送地址:Java并发编程之 Java内存模型深入理解Java序列化、反序列化机制深入理解Java枚举机制单例模式文章目录单例模式一、单例模式的介绍二、饿汉式1. 静态属性方式2. 静态代码块方式3. 枚举方式三、懒汉式1. synchronized关键字方式2. 双重检查锁方式 (DCL)2.1 DCL空指针异常的原因2.2 解决空指针异常的方式3. 静态内部类方式四、破坏单例模式的方式1. 序列化 / 反序列化1.1 解决方法2.原创 2021-05-18 09:13:20 · 327 阅读 · 0 评论