自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

渔夫的博客

站在巨人的肩膀上仰望星空

  • 博客(21)
  • 收藏
  • 关注

原创 结构型模式之装饰者模式

1 装饰者模式定义 装饰模式(Decorator Pattern)指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 设计原则:多用组合,少用继承!对扩展开放,对修改关闭! 利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。 2 装饰者模式特点 通过继承的方式可以使子类具有父类的属性和方法。子类继承父类后,因为一些业务需求可以通过

2020-07-22 17:55:49 193

原创 创造型模式之原型模式

1 原型模式简介 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。 在Java中我们知道通过new关键字创建的对象是非常繁琐的(类加载判断,内存分配,初始化等),在我们需要大量对象的情况下,原型模式就是我们可以考虑实现的方式。 原型模式我们也称为克隆模式,即一个某个对象为原型克隆出来一个一模一样的对象,该对象的属性和原型对象一模一样。

2020-07-22 17:51:09 238

原创 创造型模式之抽象工厂模式

1 抽象工厂模式定义 抽象工厂模式(Abstract Factory Pattern)隶属于设计模式中的创建型模式,用于产品族的构建。抽象工厂是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂是指当有多个抽象角色时使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会

2020-07-22 17:49:59 215

原创 创造型模式之工厂方法模式

​ 简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背“开闭原则”,如何实现增加新产品而不影响已有代码?工厂方法模式应运而生。 1 工厂方法模式定义 ​ 工厂方法模式(Factory Method Pattern)又称为工厂模式,它对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不再负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。在这个模式

2020-07-22 17:48:43 178

原创 创造型模式之简单工厂模式

1 工厂模式简介 1.1 定义 ​ 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 ​ 简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 1.2 简单工厂模式结构图 该模式中包含的角色及其职责 工厂角色(Factory) 简单工厂模式的核

2020-07-22 17:45:12 186

原创 数据结构与算法大纲

课程介绍 1.1课程目标 数据结构和算法这门课程无论在哪个学校的计算机专业,都是一门必修课,因为这门课程非常重要的,是编程必备 的基础,但是这门课程是一门不太好学习的课程,因为它学习起来是非常的枯燥乏味的。但是如果你想让自己的编 程能力有质的飞跃,不再停留于调用现成的API,而是追求更完美的实现,那么这门课程就是你的必修课,因为程 序设计=数据结构+算法。 通过对基础数据结构和算法的学习,能更深层次的理解程序,提升编写代码的能力,让程序的代码更优雅,性能更 高。 1.2 课程内容 1.数据结构和算法概述 2

2020-07-22 16:33:00 198

原创 设计模式目录

1 设计原则 SOLID 单一职责原则 Single Responsibility Principle SRP 接口隔离原则 Interface Segregation Principle ISP 依赖反转 原则Dependency Inversion Principle DIP 里式替换原则 Liskov Substitution Principle LSP 迪米特法则 Law of Demeter LOD 开闭原则 Open Closed Principle SRP 合成复用原则 Comp

2020-07-21 16:07:32 70

原创 枚举类的使用

1. 概要 枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 当需要定义一组常量时,强烈建议使用枚举类 如果枚举类中只有一个对象,则可以作为单例模式的实现方式(详细见构建者模式之单例模式)。 枚举类的属性 枚举类对象的属性不应允许被改动, 无setter()方法,所以应该使用 private final 修饰; 枚举类的使用 private final 修饰的属性应该在构造器中为其赋值 ; 枚举类的对象有限,所以构造器应该设置成私有,不允许外界添加; 若枚举类显式的定义了带参数的构造器, 则

2020-07-13 17:09:19 415

原创 创建型模式之单例模式

1 单例设计模式介绍 ​ 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。 类结构图: 需要: (1)将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。 (2)在该类内部产生一个唯一的实例化对象,并且将其封装为private static类型。 (3)定义一个静态方法返回这个唯一对象。 2 单例设计模式四种方式 单例模式有四种方式: 饿汉式 静态常量(推荐) 静态代码块 懒汉式

2020-07-13 16:54:32 111

原创 MySQL基础知识总结

1、MySQL基础 1.1 数据库基本介绍 数据库是存储数据的仓库,本质上是一个文件系统,以文件的方式存储数据到计算机上。所有的关系型数据库都可以使用通用的 SQL 语句进行管理。 数据的存储方式: Java 中创建对象: Student s = new Student(1, “张三”) 存在内存中 Java IO 流:把数据保存到文件中 存储位置 优点 缺点 内存 速度快 不能永久保存,数据是临时状态。 文件 数据可以永久保存 操作数据不方便,查询某个数据。 数据库 1. 数据可

2020-07-09 16:11:48 321 1

原创 浅谈UML和设计模式中类的关系

UML和设计模式中类的关系 ​ 在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。 接下来我们画一张比较完整的类图,类间关系有:继承、组合、聚合、依赖、关联。 1. 依赖(Dependence) 依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一

2020-07-06 18:11:37 398

原创 细说设计模式七大原则(7):合成复用原则

基本介绍 英文名:Composite Reuse Principle,CRP 定义:软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现 问题由来:通常类的复用分为继承复用和合成复用两种,继承复用虽然有简单和易实现的优点,但它也存在以下缺点: 继承复用破坏了类的封装性。因为继承会将父类的实现细节暴露给子类,父类对子类是透明的,所以这种复用又称为“白箱”复用。 子类与父类的耦合度高。父类的实现的任何改变都会导致子类的实现发生变化,这不利于类的扩展与维护。 它限制了复用的灵活性。

2020-07-01 20:36:19 578

原创 细说设计模式七大原则(6):开闭原则

2.8.1 基本介绍 英文名:Open Closed Principle,OCP 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 开闭原则是编程中最基础、最重要的设计原则。 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则。 为什么使用开闭原则 :在程序的生命周期内,因为变

2020-07-01 20:12:22 228

原创 细说设计模式七大原则(5):迪米特法则

基本介绍 英文名:Law of Demeter,LoD 别名:最少知识原则 Least Knowledge Principle,LKP 迪米特法则法则定义如下: 一个对象应该对其他对象保持最少的了解 类与类关系越密切,耦合度越大 迪米特法则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的 public 方法,不对外泄露任何信息 迪米特法则还有个更简单的定义:只与直接的朋友通信(Only talk to

2020-07-01 20:10:03 216

原创 细说设计模式七大原则(4):里氏替换原则

基本介绍 英文名:The Liskov Substitution Principle, Liskov 里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义: 如果对每个类型为 T1 的对象 o1,都有类型为 T2 的对象 o2,使得以 T1 定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。换句话说,所有引用基类的地方必须能透明地使用其子类的对象。 在使用继承时,遵循里氏替换原则,在

2020-07-01 20:08:24 157

原创 细说设计模式七大原则(3):依赖倒转原则

基本介绍 英文名:Dependence Inversion Principle 我们先要写出低耦合高内聚的代码,在java中需要遵循如下原则: 模块间的依赖通过抽象类或接口发生,实现类之间的依赖关系也是通过抽象类或接口产生(实现类之间不应发生直接的依赖关系),降低系统的耦合性 接口或抽象不依赖于实现类,但实现类依赖接口或抽象类,实现类对系统需要的功能具体实现,提高类的内聚程度 依赖倒转原则: 高层模块不应该依赖低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒转原则

2020-07-01 20:05:29 318

原创 细说设计模式七大原则(2):接口隔离原则

基本介绍 英文名:Interface Segregation Principle, ISP 接口隔离原则定义如下: 客户端不应该依赖它不需要的接口 类间的依赖关系应该建立在最小的接口上 其实通俗来理解就是,不要在一个接口里面放很多的方法,这样会显得这个类很臃肿不堪。接口应该尽量细化,一个接口对应一个功能模块,同时接口里面的方法应该尽可能的少,使接口更加轻便灵活。或许看到接口隔离原则这样的定义很多人会觉得和单一职责原则很像,但是这两个原则还是有着很鲜明的区别。接口隔离原则和单一职责原则的审视角度是不同的,

2020-07-01 14:22:27 214

原创 细说设计模式七大原则(1):单一职责原则

2.1 设计模式的目的 编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好 代码重用性 (即:相同功能的代码,不用多次编写) 可读性 (即:编程规范性, 便于其他程序员的阅读和理解) 可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护) 可靠性 (即:当我们增加新的功能后,对原来的功能没有影响) 使程序呈现高内聚,低耦合的特性分享金句: 设计模式包含了面向对象的精髓,“懂了

2020-07-01 14:08:01 151

原创 Markdown基础语法

Markdown基础语法 作者: Lilair 查看源代码快捷键 Ctrl+/ 两次回车退出当前格式 文章目录Markdown基础语法1. 常用快捷键2. 生成目录3. 分级标题一级标题二级标题三级标题四级标题五级标题六级标题4. 字体5. 引用6. 分割线7. 图片8 超链接9. 列表10. 表格11 .代码 1. 常用快捷键 功能 快捷键 标题级别 ctrl+1、2、3、4… 加粗 ctrl+B 斜体 Ctrl + I [TOC]+回车 生成目录

2020-06-30 16:28:24 101

原创 Docker简介及安装

(1)Docker简介及安装 目录: 1、Docker简介 1.1、什么是虚拟化 1.2、什么是Docker 1.3、容器与虚拟机比较 1.4、Docker 组件 1.4.1、Docker服务器与客户端 1.4.2、Docker镜像与...

2020-04-21 10:03:46 117

原创 SSM框架整合

SSM框架整合 基于Maven+SpringMVC+Spring+MyBatis的组合,快速搭建SSM框架。适合初学者学习。 第一步:准备开发环境 JDK11 Maven:apache-maven-3.6.0 Tomcat:apache-tomcat-8.5.41 第二步:添加Maven相关依赖 <?xml version="1.0" encoding="UTF-8"?> <pr...

2020-01-17 17:36:50 88

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除