Java设计模式
文章平均质量分 92
设计模式学习笔记-Java语言实现
ixcoret
这个作者很懒,什么都没留下…
展开
-
代理模式(静态代理、JDK动态代理)Java实现
目录代理模式概述模式的结构静态代理动态代理JDK动态代理代理模式概述在有些情况下,一个对象不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等都可以通过找中介完成。代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。模式的结构代理模式的主要原创 2020-10-14 20:06:36 · 74 阅读 · 0 评论 -
工厂设计模式-Java实现(简单工厂模式、工厂方法模式、抽象工厂模式)
目录工厂模式介绍简单工厂模式模式的结构与实现模式的结构模式的实现优缺点应用场景简单工厂模式在JDK中的应用工厂方法模式模式的结构与实现模式的结构模式的实现优缺点应用场景工厂方法模式在JDK中的应用抽象工厂模式模式的定义与特点模式的结构与实现模式的结构模式的实现模式的应用场景模式的扩展工厂模式介绍凡是需要创建复杂对象的地方,都可以尝试考虑使用工厂模式来代替。注意:上述复杂对象指的是类的构造函数参数过多等对类的构造有影响的情况,因为类的构造过于复杂,如果直接在其他业务类内使用,则两者的耦合过重,后续业务原创 2020-10-10 19:10:39 · 278 阅读 · 0 评论 -
单例设计模式Java实现的八种写法以及反序列化、反射的破坏与防御
目录单例设计模式概述主要步骤单例模式实现方案1. 饿汉式(静态常量,线程安全)优缺点说明2. 饿汉式(静态代码块,线程安全)优缺点说明3. 懒汉式(线程不安全)优缺点说明4. 懒汉式(同步方法,线程安全,但性能差)优缺点说明5. 懒汉式(同步代码块,但并不能保证线程安全)优缺点说明6. 懒汉式(双重检查加锁,线程安全)优缺点说明7. 静态内部类(线程安全)优缺点说明8. 枚举(线程安全)优缺点说明反序列化破坏单例模式及解决方案反射破坏单例模式及解决方案单例模式在JDK中的应用单例设计模式概述单例设计模式原创 2020-10-05 20:04:19 · 167 阅读 · 0 评论 -
设计模式七大原则之合成复用原则(组合优于继承)
目录概述案例演示使用继承方式使用组合/聚合方式概述合成复用原则,又叫组合/聚合复用原则,它要求在软件复用时,要优先考虑使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。聚合关系:是整体与部分的关系,且部分可以离开整体而单独存在,是一种不稳定的包含关系,它们有各自独立的生命周期;例如:公司和员工的关系,公司包含员工,但如果公司倒闭,员工依然可以换公司上班。代码体现:通常将一个类的对象作为另一个类的成员变量来实现聚合关系组合关系:也是整体与部分的关系,但部分不能离开整体而单独原创 2020-09-22 23:12:04 · 1827 阅读 · 0 评论 -
设计模式七大原则之里氏替换原则
继承性的思考和说明1)继承包含这样一层含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然它不强制要求所有的子类必须遵循这些契约,但是如果子类对这些已经实现的方法任意修改,就会对整个继承体系造成破坏。2)继承在给程序设计带来便利的同时,也带来了弊端。比如使用继承会给程序带来侵入性,程序的可移植性降低,增加对象间的耦合性,如果一个类被其他的类所继承,则当这个类需要修改时,必须考虑到所有的子类,并且父类修改后,所有涉及到子类的功能都有可能产生故障3)问题提出:在编程中,如何正确的使用继承? =原创 2020-09-21 21:00:15 · 104 阅读 · 0 评论 -
设计模式七大原则之迪米特法则(最少知道原则)
目录概述案例演示违反迪米特法则的实现遵循迪米特法则的改进方案概述定义:一个类对于其他类知道的越少越好,一个对象应当对其他对象有尽可能少的了解从迪米特法则的定义和特点可知,它强调以下两点:从依赖者的角度来说,只依赖应该依赖的对象。从被依赖者的角度说,只暴露应该暴露的方法。案例演示计算机关机案例:当我们点击计算机关机按钮的时候,计算机会执行一系列的动作,比如:保存当前未完成的任务,关闭相关的服务,接着关闭显示屏,关闭电源,这些都完成后,计算机正式关闭。违反迪米特法则的实现Computer类原创 2020-09-20 21:14:57 · 221 阅读 · 0 评论 -
设计模式七大原则之依赖倒置原则
目录概述案例演示依赖正置方案:改进方案:依赖倒置普通方法传递依赖对象构造方法传递依赖对象set方法传入依赖对象依赖倒转原则的注意事项和细节概述定义:1)高层模块不应该依赖低层模块,二者都应该依赖其抽象。从代码的角度来说,高层模块就是调用者,低层模块就是被调用者。2)抽象不应该依赖细节,细节应该依赖抽象依赖倒置的中心思想是面向抽象(抽象类或接口)编程依赖倒置原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中,抽象指原创 2020-09-19 22:44:50 · 186 阅读 · 0 评论 -
设计模式七大原则之接口隔离原则
目录概述案例演示:未使用接口隔离原则的设计:使用接口隔离原则的设计概述定义:客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上。简单地说,就是不要定义方法多而全的总接口,尽量细化接口,接口中的方法尽量少。案例演示:类C通过通过接口依赖(使用)类A,但是只会使用到1、2、3方法,类D通过接口依赖(使用)类B,但是只会使用到1、4、5方法未使用接口隔离原则的设计:代码:public interface TotalInterface { void operatio原创 2020-09-18 21:53:59 · 150 阅读 · 0 评论 -
设计模式七大原则之单一职责原则
目录概述案例演示单一职责原则的优点注意事项概述定义:不要存在多于一个导致类变更的原因。通俗的说,一个类、接口、方法只负责一项职责。例如:类A负责两个不同职责:职责1,职责2,当职责1需求变更而修改A时,可能造成职责2执行错误,所有需要将类A的粒度分解为A1,A2。原则上说,我们设计一个类的时候不应该设计成大而全的类,要设计粒度小、功能单一的类,如果一个类有两个或两个以上的不相干的功能,那么我们就说它违背了单一职责原则,应该把它拆分成多个功能单一、粒度更细的类。案例演示以交通工具案例来分析方案一原创 2020-09-16 22:39:00 · 98 阅读 · 0 评论 -
设计模式七大原则之开闭原则
目录概述案例演示概述开闭原则是编程中最基础、最重要的设计原则。一个软件实体(类、模块、方法等)应该对扩展新功能开放,对修改原有功能关闭。用抽象构建框架,用实现扩展细节。当软件需要添加一个功能时,尽量在原有代码基础上进行扩展,而不是修改原有代码。案例演示以书店销售书籍为例来说明什么是开闭原则:public interface IBook { String getName(); double getPrice(); String getAuthor();}public原创 2020-09-15 20:27:46 · 181 阅读 · 0 评论 -
UML类图和类之间的关系
目录1. 类和接口的UML表示类接口2. 类之间的关系泛化(继承)实现依赖关联聚合组合区别统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,一种用于软件系统分析和设计的工具。UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系。1. 类和接口的UML表示类使用三层矩形框表示第一层是类的名称第二层是属性格式:[可见性]属性名:类型[=默认值]例如:- name: String原创 2020-09-12 18:44:01 · 551 阅读 · 0 评论