
Java设计模式
文章平均质量分 92
给大家整理发表一些常见的设计模式
真不会coding
Java未半而中道转嵌入式Linux
展开
-
Java设计模式的一些问题及思考
1.单例模式的声明过程先私有构造方法,再在成员位置创建该类的对象,最后对外提供静态方法获取该对象。若是懒汉式,则不需要创建该类的对象。2.懒汉式和饿汉式的区别 饿汉式:类加载就会导致该单实例对象被创建 懒汉式:类加载不会导致该单实例对象被创建,而是首次使用该对象时才会创建3.双重检查锁定的使用场景与过程使用场景:单例模式;防止接口调用双重检查锁模式是一种非常好的单例实现模式,解决了单例、性能、线程安全问题但是在多线程的情况下,可能会出现空指针问题,出现问题的原因是JVM在实例化对象的时候会进行优化和指令原创 2022-07-04 01:51:57 · 318 阅读 · 0 评论 -
Java设计模式——结构型模式之组合模式
对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象也可以是叶子对象。但是由于容器对象和叶子对象在功能上面的区别,使得我们在使用的过程中必须要区分容器对象和叶子对象,但是这样就会给客户带来不必要的麻烦,作为客户而已,它始终希望能够一致的对待容器对象和叶子对象。定义: 又名部原创 2022-07-03 23:43:03 · 108 阅读 · 0 评论 -
Java设计模式——结构型模式之外观模式
有些人可能炒过股票,但其实大部分人都不太懂,这种没有足够了解证券知识的情况下做股票是很容易亏钱的,刚开始炒股肯定都会想,如果有个懂行的帮帮手就好,其实基金就是个好帮手,支付宝里就有许多的基金,它将投资者分散的资金集中起来,交由专业的经理人进行管理,投资于股票、债券、外汇等领域,而基金投资的收益归持有者所有,管理机构收取一定比例的托管管理费用。定义: 又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具原创 2022-07-03 23:38:37 · 117 阅读 · 0 评论 -
Java设计模式——行为型模式之观察者模式
定义:又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。在观察者模式中有如下角色:【例】微信公众号在使用微信公众号时,大家都会有这样的体验,当你关注的公众号中有新内容更新的话,它就会推送给关注公众号的微信用户端。我们使用观察者模式来模拟这样的场景,微信用户就是观察者,微信公众号是被观察者,有多个的微信用户关注了程序猿这个公众号。类图如下:代码如下:定义抽原创 2022-07-03 22:14:04 · 226 阅读 · 0 评论 -
Java设计模式——结构型模式之享元模式
定义: 运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。享元(Flyweight )模式中存在以下两种状态:享元模式的主要有以下角色:【例】俄罗斯方块下面的图片是众所周知的俄罗斯方块中的一个个方块,如果在俄罗斯方块这个游戏中,每个不同的方块都是一个实例对象,这些对象就要占用很多的内存空间,下面利用享元模式进行实现。先来看类图:代码如下:俄罗斯方块有不同的形状,我们可以对这些形状向上抽取出Abstra原创 2022-07-03 20:49:19 · 141 阅读 · 0 评论 -
Java设计模式——结构型模式之桥接模式
现在有一个需求,需要创建不同的图形,并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系:我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色,就需要创建更多的类。试想,在一个有多种可能会变化的维度的系统中,用继承方式会造成类爆炸,扩展起来不灵活。每次在一个维度上新增一个具体实现都要增加多个子类。为了更加灵活的设计系统,我们此时可以考虑使用桥接模式。定义: 将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。桥原创 2022-07-03 19:35:11 · 135 阅读 · 0 评论 -
Java设计模式——结构型模式之适配器模式
如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。生活中这样的例子很多,手机充电器(将220v转换为5v的电压),读卡器等,其实就是使用到了适配器模式。定义: 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式分为类适配器模式和对象适配器模式,前者类原创 2022-07-03 17:58:33 · 140 阅读 · 0 评论 -
Java设计模式——创建者模式之建造者模式
将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。建造者(Builder)模式包含如下角色:抽象建造者类(Builder):这个接口规定要实现复杂对象的那些部分的创建,并不涉及具体的部件对象的创建。具体建造者类(ConcreteBuilder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。在构造过程完成后,提供产品的实例。产品类(Product):要创建的复杂对象。指挥者类(Director):调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,原创 2022-07-03 16:45:03 · 139 阅读 · 0 评论 -
Java设计模式——创建者模式之原型模式
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。原型模式包含如下角色:接口类图如下:原型模式的克隆分为浅克隆和深克隆。Java中的Object类中提供了 方法来实现浅克隆。 Cloneable 接口是上面的类图中的抽象原型类,而实现了Cloneable接口的子实现类就是具体的原型类。代码如下:Realizetype(具体的原型类):PrototypeTest(测试访问类):3.4 案例用原型模式生成“三好学生”奖状同一学校的“三好学生”奖状除了获奖人姓名不同,其他原创 2022-07-03 15:52:22 · 139 阅读 · 0 评论 -
Java设计模式——创建者模式之工厂模式
简单工厂模式、工厂方法模式、抽象工厂模式原创 2022-07-03 01:26:15 · 187 阅读 · 0 评论 -
Java设计模式——创建者模式之单例设计模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式的主要有以下角色:饿汉式-方式1(静态变量方式)说明: 该方式在成员位置声明Singleton类型的静态变量,并创建Singleton类的对象instance。instance对象是随着类的加原创 2022-07-02 23:32:18 · 102 阅读 · 0 评论 -
Java设计模式——六大软件设计原则
1. 开闭原则2. 里氏代换原则3. 依赖倒转原则4. 接口隔离原则5. 迪米特法则6. 合成复用原则原创 2022-04-27 10:16:37 · 441 阅读 · 1 评论 -
Java设计模式——UML类图
文章目录一、UML类图1. 类图概述2. 类图的作用3. 类图表示法3.1 类的表示方式3.1 类与类之间的关系的表示方式3.1.1 关联关系3.1.2 聚合关系3.1.3 组合关系3.1.4 依赖关系3.1.5 继承关系3.1.6 实现关系一、UML类图统一建模语言(Unidied Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统一7图形化、能表达软件设计中的动态与静态信息。UML从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时原创 2022-04-24 19:44:14 · 5172 阅读 · 3 评论