202303-16 JAVA设计模式---单例模式你知道吗 目录单例模式的介绍单例模式实现的八种方式饿汉式静态常量静态代码块懒汉式线程不安全的写法线程安全,同步锁—效率低,不推荐线程安全,同步代码块—无法解决线程安全问题,不推荐双重检查—解决线程安全和懒加载问题–推荐使用静态内部类—可以实现懒加载,线程安全,推荐使用枚举单例模式注意事项总结单例模式的介绍单例模式实现的八种方式饿汉式静态常量步骤:1.构造器私有化(防止new)2.类的内部创建对象3.向外暴露一个静态的公... 继续阅读 >
202303-16 JAVA设计模式---原型模式你了解吗 目录介绍角色Java语言提供的clone()方法代码演示—克隆羊结论深浅拷贝深浅拷贝探讨实现深克隆的方式一:手动对引用对象进行克隆实现深克隆的方式二:序列化原型模式对单例模式的破坏优缺点原型模式在Spring中的应用场景总结介绍原型模式(PrototypePattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。原型模式的工作原理很简单:将一个原型对象传给那个要发动创建的... 继续阅读 >
202303-16 JAVA设计模式----建造者模式详解 目录介绍角色代码演示通过反射创建建造者对象优点缺点适用场景总结介绍建造者模式(BuilderPattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。建造者模式一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。角色Builder(抽象建造者):它为创建一个产品Product对象的各个部件指... 继续阅读 >
202301-31 Java以命令模式设计模式 目录Java以命令模式设计模式1、简单介绍2、命令模式Java以命令模式设计模式1、简单介绍意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。何时使用:在某些场合,比如要对行为进行"记录、撤销/重做、事务"等处理,这... 继续阅读 >
202211-02 Java设计模式:组合模式 目录概述结构组合模式案例分析总结在本讲,我们来学习一下结构型模式里面的第六个设计模式,即组合模式。概述在学习组合模式之前,我们先来看下面这张图。对于以上这张图大家应该很熟悉,我们可以将其看作是一个文件系统,其实说到底它就是Windows系统里面的一个目录结构,只不过对于Windows中的文件系统而言,它里面包含有C盘、D盘、E盘等等盘符,而这里我们只是以它里面的某一个盘符里面的目录结构为例来进行了一个描述。对于这... 继续阅读 >
202207-11 java中单例模式讲解 目录WHATWHYHOW饿汉式实现一:静态实例参数与静态代码块实现二:静态内部类懒汉式错误一:单线程实现错误二:同步方法错误三:同步代码块之单次检查错误四:同步代码块之双重检查正确:双重检查+阻止重排序枚举场景个人认为单例模式是设计模式中最简单也是最常用的一种,是对有限资源合理利用的一种方式。这个模式看似简单,但是其中蕴含了关于并发、类加载、序列化等一系列深层次的知识,如果理解不够深,就有可能在高并发时遇到... 继续阅读 >
202206-10 java适配器模式之万物拟人化 目录什么是适配器模式类的适配器模式源(Adapee)角色目标(Target)角色适配器(Adaper)角色增加源(Adapee)角色的后果对象的适配器模式增加一个动物接口让源(Adapee)角色的猫猫和狗狗实现动物接口万物拟人适配器(Adaper)角色缺省适配模式目标(Target)角色增加行为声明适配器(Adaper)角色必须跟着增加行为实现缺省适配器什么是适配器模式以下是百科的解释。在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配... 继续阅读 >
202205-27 Java设计模式之代理模式详细解读 目录Java设计模式-代理模式什么是代理模式?代理模式-UML图:源代码:运行结果:总结:应用实例:优点:缺点:使用场景:Java设计模式-代理模式什么是代理模式?在代理模式(ProxyPattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。所谓的代理严格来讲就是两个子类共同实现一个接口,其中一个子类负责真实业务实现,另一个辅助完成... 继续阅读 >
202203-17 java设计模式:建造者模式之生产线 目录什么是建造者模式建造者模式中的角色产品角色(Product)抽象建造者(Builder)具体建造者角色(ConcreteBuilder)导演者角色(Director)最终测试总结什么是建造者模式建造者模式(BuilderPattern)是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。实用范围:当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。当构造过程必须允许被构造的对象有不同表... 继续阅读 >
202203-17 java设计模式:原始模型模式 目录什么是原始模型模式原始模型模式中的角色抽象原型角色(Prototype)具体原型角色(ConcretePrototype)客户端角色(Client)使用Java内置机制实现原始模型模式浅拷贝和深拷贝怎么实现深拷贝总结什么是原始模型模式通过给出一个原型对象指明所要创建的对象的类型,然后通过复制这个原型对象来获取的更多的同类型的对象。这让我不由自主的想起克隆技术,还记得克隆羊吗?我们接下来讲的... 继续阅读 >
202111-01 java设计模式-装饰者模式详解 目录引例一般解法装饰者模式装饰者解法代码:抽象类装饰者被装饰者客户端测试总结:引例需求:设现在有单品咖啡:Espresso(意大利浓咖啡)和LongBlack(美式咖啡),调料有Milk(牛奶)和sugar(糖),客户可以点单品咖啡或单品咖啡+调料的组合,计算相应费用。要求在扩展新的咖啡种类时,具有良好的扩展性、改动维护方便。抛砖引玉,我们先看看两种一般解法。一般解法方案一、枚举创建每一种组合可能,Drink抽象类表示饮料,cost()方法... 继续阅读 >
202111-01 java设计模式--桥接模式详解 目录引例桥接模式实战示例代码:总结引例需求:对不同手机类型的不同品牌(比如按键手机:诺基亚、翻盖手机:纽曼、智能手机:华为、小米)实现操作编程(比如:开机、关机、打电话)。先来说说一般解法:将不同手机类型继承父类手机,最后各个品牌再继承对应手机类型:弊端:乍一看没问题,但其实不易扩展(类爆炸),如果增加新的手机类型(比如新兴的折叠式),就需要增加各个手机品牌的类去继承(比如已继承智能手机的华为小米)... 继续阅读 >
202111-01 java设计模式--七大原则详解 目录设计模式单一职责原则接口隔离原则依赖倒转原则里氏替换原则开闭原则迪米特法则合成复用原则总结设计模式软件设计模式(Designpattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。打个比方就像盖大厦和小木屋,当功能简单,函数和代码少时,我们能较轻松的直接上手;但如果是像大厦那样,... 继续阅读 >
202111-01 java设计模式--建造者模式详解 目录引例一般解法代码:AbstractHouse(房子)Bungalow(平房)Villa(别墅)客户端调用建造者模式建造者模式解法代码:House类(Product产品)HouseBuilder类(Builder抽象建造者)3.Bungalow类(ConcreteBuilder具体建造者A)4.Villa类(ConcreteBuilder具体建造者B)5.HouseDirector类(Director指挥者)客户端调用总结引例需求:建造房子,建造过程包括打地基、砌墙和封顶。房子各式各样,包括平房和别墅,编程模拟实现。一般... 继续阅读 >
202111-01 java设计模式--原型模式详解 目录引例原型模式浅拷贝在原先Sheep类基础上实现Cloneable接口,重写clone方法。客户端调用Sheep类新添的Cow类客户端调用克隆深拷贝1.Cow类也实现Cloneable接口Sheep类的clone再添加调用cow的clone客户端调用1.Cow类实现序列化接口,不必实现Cloneable接口了2.在Sheep类实现序列化接口3.客户端调用总结引例问题:现在有一只羊(包含属性:名字Dolly、年龄2),需要克隆10只属性完全相同的羊。一般解法:定义Sheep类表示羊,包括构... 继续阅读 >
202110-29 java设计模式--三种工厂模式详解 目录简单工厂代码:1.产品接口2.产品接口实现子类3.简单工厂类4.调用工厂5.测试工厂方法代码:1.工厂接口2.工厂实现子类3.产品接口4.产品实现子类5.调用6.测试1.产品接口2.产品抽象子类-普通产品抽象工厂3.1产品抽象子类-魔法产品4.工厂接口5.工厂实现子类-普通工厂6.工厂实现子类-魔法工厂7.调用8.测试总结简单工厂简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。... 继续阅读 >