面试
文章平均质量分 73
GoLang.fmt
但行好事,莫问前程
展开
-
设计模式之桥接模式
桥接模式桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆。介绍意图:将抽象部分与实现部分分离,使它们都可以独立的变化。主要解决:在有多种原创 2022-01-06 21:51:44 · 81 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。我们通过下面的实例来演示适配器模式的使用。其中,音频播放器设备只能播放 mp3 文件,通过使用一个更高级的音频播放器来播放 vlc 和 mp4 文件。介绍意图:将一原创 2022-01-05 14:05:32 · 88 阅读 · 0 评论 -
设计模式之原型模式
原型模式原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。介绍意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。主要解决:在运原创 2022-01-05 14:03:29 · 74 阅读 · 0 评论 -
设计模式:Builder模式
一、前言今天我们讨论一下 Builder 建造者模式,这个 Builder,其实和模板模式非常的像,但是也有区别,那就是在模板模式中父类对子类中的实现进行操作,在父类之中进行一件事情的处理,但是在 Builder 模式之中,父类和子类都不用关心怎么处理,而是用另一个类来完成对这些方法的有机组合,这个类的职责就是监工,规定了到底要怎么样有机的组合这些方法。在监工类(Director)中,将父类组合进去,然后调用父类的操作来抽象的实现一件事情,这就是面向接口(抽象)变成的妙处了,当然这个 Builder 可以原创 2022-01-03 01:07:57 · 1842 阅读 · 0 评论 -
设计模式之建造者(Builder)模式
1、定义以及 UML 建模图将一个复杂的对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示。2、使用场景:多个部件或者零件,都可以装配到一个对象中,但是产生的运行结果又相同。产品类非常复杂,或者产品类中调用顺序不同产生了不同的作用。初始化一个对象特别复杂,如使用多个构造方法,或者说有很多参数,并且都有默认值时。3、核心类(1) 抽象产品类 computer。(2) Builder 抽象 Builder,规范产品的组建,一般是由子类实现具体的组建过程。(3)MacbookBui原创 2022-01-03 01:05:12 · 110 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。介绍意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着原创 2022-01-03 01:02:16 · 113 阅读 · 0 评论 -
设计模式 – 工厂模式
工厂方法模式一种创建对象的模式,它被广泛应用在jdk中以及Spring和Struts框架中;工厂方法模式基于"输入",应用在超类和多个子类之间的情况,这种模式将创建对象的责任转移到工厂类;首先让我们学习一下如何在Java中应用工厂方法模式并且学习到工厂方法的优点,另外工厂方法模式也广泛应用在jdk中;超类可以是接口、抽象类、父类,本例中将通过重写 toString() 方法来解释工厂方法模式;实例package com.journaldev.design.model; public abstr原创 2022-01-01 02:57:18 · 227 阅读 · 0 评论 -
下面来介绍一下常见的设计模式(第一种 工厂模式)
工厂模式工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。介绍意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。如何解决:让其子类实现工厂接口,返回的也是一个抽象原创 2022-01-01 02:50:05 · 257 阅读 · 0 评论 -
HashMap 这套八股,不得背个十来遍?
HashMap、HashTable、ConcurrentHashMap 这一套感觉今年面试都不怎么问了,场景题越来越多,求职的门槛越来越高,这种常见的面试题问出来大概率就是要送波分了。讲讲 HashMap 的底层结构和原理HashMap 就是以 Key-Value 的方式进行数据存储的一种数据结构嘛,在我们平常开发中非常常用,它在 JDK 1.7 和 JDK 1.8 中底层数据结构是有些不一样的。总体来说,JDK 1.7 中 HashMap 的底层数据结构是数组 + 链表,使用 Entry 类存储原创 2022-01-01 02:39:22 · 281 阅读 · 0 评论 -
部分面试题
多线程、并发及线程的基础问题1)Java 中能创建 volatile 数组吗?能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组。我的意思是,如果改变引用指向的数组,将会受到 volatile 的保护,但是如果多个线程同时改变数组的元素,volatile 标示符就不能起到之前的保护作用了。2)volatile 能使得一个非原子操作变成原子操作吗?...原创 2019-09-03 20:40:11 · 227 阅读 · 0 评论