06 2021 档案

摘要:迭代器模式 定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。 如果我们需要遍历一个聚合对象中的各个元素,通常的做法是把遍历方法写在对象这个类里,这样做如果要更改遍历方法需要修改这个对象类,违背了“开闭原则”。迭代器模式能较好的克服这个缺点。 使用场景:需要遍历一个聚 阅读全文
posted @ 2021-06-30 08:11 女友在高考 阅读(51) 评论(0) 推荐(0) 编辑
摘要:命令行模式 定义:将一个请求封装为一个对象,使发出的请求的对象和执行请求的对象分割开。这两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。 顺序:请求者->命令->执行者 优点: 降低系统耦合度 扩展性好,增加或删除命令不会影响其他类 方便实现Undo和Redo操作, 阅读全文
posted @ 2021-06-29 23:02 女友在高考 阅读(154) 评论(0) 推荐(0) 编辑
摘要:责任链模式 也叫职责链模式 定义:为了避免请求发送者和多个请求处理者之间的耦合,于是将所有请求的处理者通过前一对象记住其后一对象的引用。当有请求来时,可将请求沿着链传递,直到有处理者处理它为止。 优点: 降低了对象之间的耦合度,该模式使得一个对象无须知道到底是哪一个对象处理其请求。 责任链简化了对象 阅读全文
posted @ 2021-06-29 20:52 女友在高考 阅读(77) 评论(0) 推荐(0) 编辑
摘要:代理模式 定义:由于某些原因需要给某对象提供一个代理以控制该对象的访问 结构: 抽象主题(Subject): 接口声明要实现的业务方法 真实主题 (Real Subject): 实现抽象主题里的业务方法 代理类(Proxy):提供了与真实主题相同的接口,它可以扩展、控制真实主题的功能。 代理模式的结 阅读全文
posted @ 2021-06-28 23:04 女友在高考 阅读(70) 评论(0) 推荐(0) 编辑
摘要:享元模式 定义:使用共享物件,来减少内存使用量。通常物件中的部分状态时可以分享的,常见的做法时将他们放在外部数据结构中,当需要使用时再将它们传递给享元。能够避免重复创建。 应用实例:Java里的String字符串缓存池。数据库的数据池 使用场景:系统里有大量相似对象,需要用到缓存的场景 需要注意线程 阅读全文
posted @ 2021-06-28 21:43 女友在高考 阅读(55) 评论(0) 推荐(0) 编辑
摘要:外观模式 定义:他为子系统中的一组接口提供一个统一的高层接口,这使得子系统更加容易使用。 外观模式是"迪米特法则"的典型应用。只要是高层模块需要调度多个子系统时,我们都自觉地编写一个新的类封装,提供出精简的接口。 Facade类封装了子系统,可以提供出多个接口,简化客户角色的调用。 代码示例: pa 阅读全文
posted @ 2021-06-27 23:13 女友在高考 阅读(70) 评论(0) 推荐(0) 编辑
摘要:装饰器模式 定义:不改变原类文件和继承关系的情况下,动态扩展一个对象的功能。他是通过创建一个包装对象。 使用场景:不想使用继承,但又要在原有基础上增加额外功能。如一部手机,给他增加一个手机壳,再增加一个保护膜。 结构: 抽象构件(Component):定义一个抽象接口 具体构件(ConcreteCo 阅读全文
posted @ 2021-06-27 17:49 女友在高考 阅读(55) 评论(0) 推荐(0) 编辑
摘要:组合模式 定义:将对象组合成树形结构以表示部分整体得层次结构。组合模式使用户对单一对象和组合对象使用具有一致性。 使用场景:希望用户忽略组合对象和单个对象的不同,统一的使用组合结构中的所有对象。如文件、文件夹的管理。 有两种方式: 透明方式: 由于抽象构件声明了所有子类中的全部方法,所以客户端无须区 阅读全文
posted @ 2021-06-27 16:56 女友在高考 阅读(63) 评论(0) 推荐(0) 编辑
摘要:桥接模式 定义:在软件系统中,某些类型由于自身的逻辑,它具有两个纬度的变化,那么如何应对这种多维度的变化呢?就是使他的抽象部分和实现部分分离开,使他们可以独立变化。 使用场景:需要按两个维度区分的情况。比如奶茶,按杯型分为大中小,按温度分为常温、加冰。那么如果按照普通接口实现要定义3*2=6个类才能 阅读全文
posted @ 2021-06-27 14:50 女友在高考 阅读(64) 评论(0) 推荐(0) 编辑
摘要:适配器模式 定义:将一个类的接口转为客户需要的另一个接口。目的是使原本不兼容而不能一起工作的那些类可以一起工作。 适配器模式从实现方式上分为两种,类适配器和对象适配器。这两种的区别在与实现方式的不同,一种采用继承,一种采用组合。 另外从使用目的也为分了两种,特殊适配器和缺省适配器。一种是为了复用原有 阅读全文
posted @ 2021-06-27 10:58 女友在高考 阅读(136) 评论(0) 推荐(0) 编辑
摘要:原型模式 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 Java 中的 Object 类提供了浅克隆的 clone() 方法,他执行得是浅拷贝,也就是说如果是引用类型得对象,只是会拷贝引用。 使用场景: 初始化很花时间,很废资源的时候,通过原型拷贝可以避免这些消耗 通过ne 阅读全文
posted @ 2021-06-27 00:06 女友在高考 阅读(59) 评论(0) 推荐(0) 编辑
摘要:建造者模式 定义:将一个复杂对象的构造与他的表示分离,使同样的构建过程可以创建不同的表示。 使用场景:一些基本部件不变,但是组合经常变化。就比如肯德基套餐很多样,但是都是可乐、汉堡、鸡腿、鸡翅等组成的。 使用实例:Java中的StringBuilder 建造者模式的主要角色如下: 产品 (Produ 阅读全文
posted @ 2021-06-26 23:31 女友在高考 阅读(75) 评论(0) 推荐(0) 编辑
摘要:###抽象工厂 定义:用一个超级工厂创建其他工厂,每个生成的工厂都能跟简单工厂一样创建对象。他与工厂方法不同的是:有一系列创建抽象产品的方法,而不是一个。 使用场景:需要生产的产品多于一个产品类型,而系统只使用其中一种产品类型。 1,首先从简单工厂进化到工厂方法,是因为工厂方法弥补了简单工厂对修改开 阅读全文
posted @ 2021-06-26 18:22 女友在高考 阅读(62) 评论(0) 推荐(0) 编辑
摘要:###工厂方法 定义:定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。核心工厂类不再负责产品创建,而是成为一个抽象工厂角色,仅负责工厂子类必须实现的接口实现,这样进一步抽象的好处是使得工厂方法模式可以使系统可以在不修改具体工厂角色的情况下引进新的产品。 每一种工厂创建一种产品,避免了简单 阅读全文
posted @ 2021-06-26 18:20 女友在高考 阅读(67) 评论(0) 推荐(0) 编辑
摘要:简单工厂 定义:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 使用场景:我们明确地计划不同条件下创建不同实例时。 缺点:每次需要新增产品都需要修改工厂类,不符合开闭原则。 代码示例: public interface Shape { void dr 阅读全文
posted @ 2021-06-26 18:18 女友在高考 阅读(68) 评论(0) 推荐(0) 编辑
摘要:单例模式 定义:用于保证一个类仅有一个实例,并提供别的类访问它的方法。 使用场景:需要控制实例只能有一个、节省资源的时候。 常用的创建单例模式的方法有6种。 懒汉式 线程不安全、延迟初始化 public class Singleton { private Singleton(){} private 阅读全文
posted @ 2021-06-26 18:11 女友在高考 阅读(94) 评论(0) 推荐(0) 编辑
摘要:设计模式 设计模式六大原则 开闭原则 对扩展开放,对修改关闭 2. 里氏替换原则 任何基类出现的地方,子类一定可以出现。只有当派生类可以替换掉基类,并且功能不受影响时,这样基类才能被复用,派生类也能在基类的基础上增加新的行为 3. 依赖倒转原则 针对接口编程,依赖于抽象而不是具体 4. 接口隔离原则 阅读全文
posted @ 2021-06-26 17:57 女友在高考 阅读(374) 评论(0) 推荐(0) 编辑
摘要:UML UML(Unified Modeling Language,统一建模语言)是用来设计软件蓝图的可视化建模语言,是一种为面向对象系统的产品进行说明、可视化和编制文档的标准语言,独立于任何一种具体的程序设计语言。 1997 年 UML 被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 阅读全文
posted @ 2021-06-25 18:26 女友在高考 阅读(276) 评论(0) 推荐(0) 编辑
摘要:一、Lambda表达式 Lambda表达式是一个匿名函数,即没有函数名的函数。从动态引用到动态定义,可以简化写法。 对比两种写法: Lambda表达式的语法如下: (parameters) -> expression 或 (parameters) ->{ statements; } 还有如下特性: 阅读全文
posted @ 2021-06-21 22:06 女友在高考 阅读(128) 评论(0) 推荐(0) 编辑
摘要:Guava 什么是Guava? Guava是谷歌开源的工具库,里面包含了一些新的集合类型、并发工具类、I/O、缓存、字符串操作等等。 引入依赖: <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactI 阅读全文
posted @ 2021-06-21 22:03 女友在高考 阅读(334) 评论(0) 推荐(0) 编辑
摘要:一、JDBC 早期SUN公司想编写一套可以连接天下所有数据库的API,但是当他们刚刚开始时就发现这是不可完成的任务,因为各个厂商的数据库服务器差异太大了。后来SUN开始与数据库厂商们讨论,最终得出的结论是,由SUN提供一套访问数据库的规范(就是一组接口),并提供连接数据库的协议标准,然后各个数据库厂 阅读全文
posted @ 2021-06-18 14:16 女友在高考 阅读(406) 评论(0) 推荐(1) 编辑
摘要:一、Spring框架设计 Spring framework 6大模块 1.1 Spring AOP AOP: 面向切面编程 Spring 早期版本的核心功能,管理对象声明周期和对象装配 为了实现管理和装配,一个自然的想法就是,加一个中间层代理(字节码增强)来实现所有对象的托管 IoC:控制反转 Io 阅读全文
posted @ 2021-06-10 22:58 女友在高考 阅读(128) 评论(0) 推荐(0) 编辑
摘要:一、JDK集合类 1.1 ArrayList 基本特点:基于数组,便于按照index访问,超过数组需要扩容,扩容成本较高。 原理:使用数组模拟列表,默认大小10,扩容1.5倍 安全问题:多线程写会冲突,多线程读写也会冲突。多线程下会抛ConcurrentModificationException异常 阅读全文
posted @ 2021-06-07 20:55 女友在高考 阅读(380) 评论(0) 推荐(0) 编辑
摘要:一、线程的基本知识 1.1 线程知识 进程和线程的关系和区别 线程: 线程是进程的基本执行单元,进程想要执行任务,必须要有线程。程序启动默认开启一条线程,这个线程被称为主线程。 进程: 进程是指在系统中正在运行的一个应用程序。每个进程之间是独立的,每个进程均运行在其专用且受保护的内存里。 线程的六个 阅读全文
posted @ 2021-06-01 14:50 女友在高考 阅读(671) 评论(0) 推荐(0) 编辑