
JavaLearn
JavaLearn
烟 鬼
这个作者很懒,什么都没留下…
展开
-
设计模式之Composite模式(组合模式)
设计模式,组合模式原创 2022-09-30 18:01:03 · 260 阅读 · 1 评论 -
设计模式之Strategy模式(策略模式)
啦啦啦,又懒惰了几天,希望毕业前可以整理完所有设计模式。策略模式,使用比较官方的话来介绍:定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。大白话理解一下就是策略模式是为了在业务场景中整体替换算法的实现部分,以处理不同的实际情况,使用起来也比较简单,就是在上下文中保留一个抽象的策略的引用,在根据实际情况的改变,去定义新的具体策略类。还是直接看代码(书上的例子比较复杂,我自己写的比较简单,不影原创 2022-05-21 11:29:59 · 298 阅读 · 0 评论 -
设计模式之Bridge模式(桥接模式)
这几天重新去看spring系列的框架了(也又次体会到了理解设计模式在学习框架时的好处),没有接着写,发生了一些事,又少了些许束缚,但结果对向往自由的我来说总是好的,虎入山林,龙归沧海,听听音乐,整理整理博客。书上的介绍比较简单,抽象,又看了一些其他东西才理解了一些。首先来介绍一下类的两个层次结构:功能层次结构和实现层次结构。所谓功能层次结构,我们现在有一个类ActionSomething,想在它上面拓展新的功能,直接的方法就是继承他,添加一个派生类ActionSomethingGood,如果再想拓展功能原创 2022-05-16 01:28:47 · 844 阅读 · 1 评论 -
设计模式之abstract method模式(抽象工厂模式)
这个模式没太看懂书上的例子,只感觉很繁琐,引用一篇非常好的并且看的懂的吧:工厂三兄弟之抽象工厂模式(四)还有自己的一些理解:首先说下工厂方法模式的缺点:每有一个新的产品,都需要创建两个新的类,产品类和工厂类,有时会显得非常麻烦,看起来比较臃肿。当产品可以划分产品族,有一定的产品的层次结构时,就可以使用抽象工厂模式,用来生产一组有结构的产品。...原创 2022-05-07 15:34:39 · 140 阅读 · 0 评论 -
设计模式之Builder模式(建造者模式)
啊啊啊,希望时间过的再快些,快进到论文答辩完,顶不住啦建造者模式是用来组装具有复杂结构的实例的模式,先看示例,我们要写一个编写文档的程序,该文档有以下结构:标题,字符串,多条项目。上代码:先将建造者Builder按照文档结构进行抽象:public abstract class Builder { public abstract void makeTitle(String title); public abstract void makeString(String str); pu原创 2022-05-06 23:31:05 · 456 阅读 · 0 评论 -
设计模式之Prototype模式(原型模式)
听完二手玫瑰,倍儿精神,12:43,再更一波原型模式,是通过复制而不是new生成实例的模式。一般情况下,我们会使用new 类名()来创建实例,但有时我们不能根据类来生成实例,而是通过现有的实例来生成新的实例。详细介绍可以查阅《图解设计模式》第六章Prototype模式。有的东西还是表达不出来了,直接上代码吧:public interface Product extends Cloneable{ //继承空接口Cloneable 为说明该接口是可clone的 否则会报错 public a原创 2022-05-06 01:00:48 · 483 阅读 · 0 评论 -
设计模式之Singleton模式(单例模式)
宿舍熄灯了,一楼小房间有位置了,接着肝~很简单的一个设计模式:单例模式,他是为了达到同时只有一个实例的目的。直接上代码,只存在一个实例的类Singleton:public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() { System.out.println("生成了实例"); } public static Si原创 2022-05-05 23:27:30 · 697 阅读 · 0 评论 -
设计模式之Factory Method模式(工厂方法模式)
持续感冒中。。。,又是头晕的一天,明天中午还是要打乒乓球大伙可能听说过简单工厂模式,我的比较浅薄的理解就是实际产品类继承于产品接口,但工厂类的生产方法是静态方法,通过传入参数来决定要生产的产品,当有新的产品需要生产时,需要的是修改而不是新增,不符合设计原则的开闭原则。来看Factory Method模式,这是在简单工厂模式上的一种改进。既然每次有新的产品都需要修改工厂类的生产方法,那我们可以将工厂类提取为一个接口,每有新的产品都为它新建一个工厂,来看一个生产ID卡的例子,顺便复习下之前的template原创 2022-05-05 21:59:01 · 216 阅读 · 0 评论 -
设计模式之template method模式(模板方法模式)
感冒了,一直流大鼻涕,扁桃体肿的跟个桃似的,脑袋晕晕的,非常难受,坚持学习。哦对,一直忘了说这一系列博客参考的书是《图解设计模式》。模板方法模式,最突出的就是模板二字,肯定会想到接口或者抽象类之类的东西,定制一些标准,以便子类继承或实现,达到复用的目的。接下来看书中对template method模式的解释:组成模板的方法定义在父类中,这些方法是抽象方法,并没有规定做如何处理,交由子类实现,只知道这些方法在父类中如何被使用,也就是相当于父类定义了一些流程处理的框架,而框架的细节都需要字类自己定义。来原创 2022-05-04 22:47:34 · 221 阅读 · 0 评论 -
设计模式之Adapter模式(适配器模式)
又是一个新的适应设计模式,之前已经记录过Iterator模式,感觉学习的时候记录真的真的很重要,看过一遍和自己写成博客完全不一样,当然每个人都有自己的学习方式吧。生活中常见的适配器莫过于充电器,一般电压是220V,而有些电器的额定工作电压和220V不同,所以直接需要一个适配器来转化一下电压,从而得到一个结论:适配器就是位于实际情况和需求之间,起到屏蔽这种差异的功能。Adapter主要有两种实现方式:类适配器模式(使用继承),对象适配器模式(使用委托)。先来看类适配器模式:首先我们有一个Banner类,原创 2022-05-04 11:51:02 · 463 阅读 · 1 评论 -
设计模式之Iterator模式优化
当当当,书接上回,上次发的Iterator模式太过糟糕,耦合性巨高,感觉根本无法复用,这次通过接口,泛型将该模式尽可能进行改进,使其达到一些复用的效果。直接看代码,这是新的集合要求实现的接口/** * @author lenovo * @title: CommAggregate * @projectName LearnDesignMode * @description: 通用迭代器集合要实现的接口 * 之前要求集合实现的接口里仅有要求返回迭代器这一项,为实现代码的复用,我们对集合提出更多的原创 2022-05-04 00:26:01 · 98 阅读 · 0 评论 -
设计模式之Iterator模式
今天开始重新学习设计模式,记录一下。Iterator模式看到Iterator,第一反应肯定已经想到了各种遍历,数组,集合。该模式也比较简单,相当于自己实现了一点迭代器功能,直接上代码,代码中有注释。import java.util.Arrays;/** * @author lenovo * @title: Main * @projectName LearnDesignMode * @description: TODO * @date 2022/5/221:18 */public cl原创 2022-05-02 23:06:19 · 268 阅读 · 0 评论 -
Java中将函数作为参数进行传递
最近一直在做一个项目的前端,使用的框架是vue,还有一些基于vue的组件库,学习了很多js的相关内容。今天突然想看一下Java,发现好久不看忘记了许多,还是希望每天晚上可以写点博客,当做学习,复习的方式,也改变一下我拖拖拉拉的行事,希望可以坚持下去,加油,打工人!Java中将函数作为参数进行传递现在了解到的有两种:Java8之前,一个常见的模式是将它“包装”在一个界面中,例如Callable接口,然后传入一个Callable。Java8以及之后就是今天学到的一种方法,通过Java8的新特性lambda表原创 2021-03-18 23:28:32 · 12021 阅读 · 0 评论 -
Java生成多个不重复随机数(可用于抽奖,抽签等)
最近班里要抽取考研座位,想了想可以很简单的实现这个小算法,记录一下学习过程生成多个不重复的随机数的需求场景:1.抽奖系统2.一些加密算法,比如在密码学中生成Nonce3.随机播放4.游戏中的随机数,比如卡牌类游戏中刷新卡牌,抽取卡牌因为班级人数还有座位数都是确定的,所以也没有写的太麻烦,只是用到了Random包,代码逻辑很简单,也很清晰,直接上代码:import java.util.Arrays;import java.util.Random;public class MyRandom原创 2021-01-04 13:24:48 · 4373 阅读 · 1 评论