摘要: 一、什么是Builder模式? builder模式,就好比一栋大楼,这栋大楼有很多个组件组成,但是这栋大楼只是一个各个组件结合起来的框架,每一栋大楼都有各自的特色,这些特色由它们实际情况决定。对于程序而言,这栋大楼就好比一个Builder抽象类,里面定义了很多组件方法,一个完整的功能离不开里面的每一 阅读全文
posted @ 2019-01-27 16:27 KamShing 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 一、什么是Prototype模式? 在编程中,我们可以使用new关键字指定类名来生成类的实例,但是有时候也会有不指定类名的前提下生成实例。因为有时候对象种类繁多,无法将它们整合到一个类中;或者,生成实例的过程过于复杂,难以根据类生成实例;又或者,想要将类与框架解耦。这时,为了能够在不使用类名的情况下 阅读全文
posted @ 2019-01-27 16:22 KamShing 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 一、什么是Singleton模式? Singleton模式就是平常所说的单例模式,简单来说就只有一个实例。在使用java.lang.String的时候,将不同的字符串赋给String引用,其实就是创建了一个String对象实例,当有1000个不同的字符串创建的时候,就会出现1000个实例。有时候,我 阅读全文
posted @ 2019-01-27 16:17 KamShing 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 一、什么是Factory Method模式 Factory Method模式是用来构建生成实例的工厂,在该模式下,父类决定实例生成的方式,但并不决定所要生成的具体类。这样的设计思想,就跟Template Method模式相似(具体参考:https://www.cnblogs.com/SysoCjs/ 阅读全文
posted @ 2019-01-27 16:14 KamShing 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 列表类型(List)可以存储一个有序的字符串列表,常用的操作就是向列表两端添加元素,或者获取列表中某一个片段。 列表类型内部使用双向链表(double linked list)实现的,所以向列表两端添加或删除元素的速度非常快,越是接近两端的元素就越快,但是,也有弊端,就是通过索引访问元素的速度比较慢 阅读全文
posted @ 2019-01-27 16:08 KamShing 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 一、什么是Template Method模式 顾名思义,Template Method模式就是模板方法模式。所谓的模板,就好比我们练书法一样,刚开始练习的时候,会拿各种各样的字样模板,照着写,练楷书时,就拿楷书模板,练行书时,就用行书模板。过程是固定的,即都是按着模板写,只是具体是楷书,还是行书,视 阅读全文
posted @ 2019-01-27 15:56 KamShing 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 一、什么是Adapter模式? Adapter模式,又称为适配器模式。 这是一个很通俗的名字,“适配器”,我们可以联想到笔记本电脑的充电器(专业名称又叫适配器),每一台笔记本电脑会对应只有一个适配器,适配器的作用是对民用的电压和电流进行转换,使得电压和电流满足当前的笔记本电脑的实际需求。那么,到了程 阅读全文
posted @ 2019-01-27 15:40 KamShing 阅读(244) 评论(0) 推荐(0) 编辑
摘要: Iterator,自然而然想到的是用于集合遍历的迭代器Iterator,没错Iterator模式就是指这个意思。 先来看一段代码: 上面是编程里面很常见的遍历数组的用法,假如我不直接操作array对象,然后将用于表示下标的 i 抽象化,通用化,将遍历的动作交给迭代器,那么这种模式就叫做Iterato 阅读全文
posted @ 2019-01-27 15:31 KamShing 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 当某个线程请求一个由其它线程持有的锁时,该线程就会进入等待或者阻塞状态,一直到持有锁的线程释放锁,然后再去竞争获取锁。然而,内置锁(即Synchronized修饰的锁对象)是可重入的,因此如果某个线程试图获得一个已经由它自己持有的锁,那么它会成功获得此锁,这就是所谓的重入锁,也可以理解为锁的重入。 阅读全文
posted @ 2019-01-27 15:26 KamShing 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 在多线程中,为了使得某个变量对任意一个线程可见,会使用volatile对该变量进行修饰。 理解volatile之前,要先知道线程是如何调用变量的。每一个线程都拥有自己的一个私有堆栈,变量是定义在主内存中,而每个线程会将变量copy一份到私有堆栈。每次启动线程操作,都会先从主内存读取熟读到私有堆栈,然 阅读全文
posted @ 2019-01-27 15:24 KamShing 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 使用Timer类对逻辑进行预设时,常用到两个方法,一个是schedual,另一个是schedualAtFixedRate。两者都有多种重载方法,当预设的执行时间在当前时间之后,那么两者执行的效果是完全一样;但是,反之,却出现一个很大的区别,就是追赶性。 schedual方法是不具备追赶性,而sche 阅读全文
posted @ 2019-01-27 15:15 KamShing 阅读(504) 评论(0) 推荐(0) 编辑