fishman的博客

  • Home

  • Tags

  • Categories

  • Archives

装饰器模式

Posted on 2019-04-15 | Edited on 2019-05-28 | In 设计模式

装饰器模式装饰器模式就是动态地给一个对象添加一些额外的职责,扩展对象的功能.对于增加功能来说,装饰器模式比生成子类更为灵活. 装饰器模式的结构通常来说,给一个对象添加一些额外的功能,可以通过继承来实现,但是这并不能动态地给对象添加职责,如果要添加一些职责,只能改变原有对象. 这时候就需要有装饰器模式出现了. 装饰器模式并不是利用继承和多态来扩展和复用功能,是基于对象组合的方式 . 装饰器模式的角色有: 抽象的对象角色 给出一个抽象接口,以规范准备接受附加功能的对象 具体的被装饰者 一个将要接受附加功能的具体实现,就是被装饰者,需要实现抽象的对象接口 装饰抽象类  持有一个 ...

Read more »

HashMap源码阅读

Posted on 2019-04-14 | Edited on 2019-04-24 | In 源码阅读

HashMapjava.util包下面的工具类,键值对存储数据.通过对键值计算hash值,来存储到对应的位置.jdk1.8中底层使用数组加链表实现.键值对通过一个内部类的Node节点来表示.采用链地址法解决hash冲突,如果一条链上的节点超过给定阈值会变为红黑树.默认为8.在hashmap中是可以存储空key和value的.如果为空,则位置为0. 声明hashmap继承了AbstractMap类,实现Map接口和克隆接口.public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V ...

Read more »

java注解

Posted on 2019-04-13 | Edited on 2019-05-02 | In java

前言这两天在自己学习着写一个小型的web框架,有点像spring,但是有是轻量级的.里面用到的注解功能.但是对于自定义注解这块又不熟悉,所以专门学习了一波,做点笔记记下来. 概述注解是自带的.jdk中本身就有很多内置注解,比如override等等.注解的功能其实就是为一些加了注解的类,方法等赋予一些特别的含义.java中有4中元注解@Target中的参数表示注解应该用在什么地方,参数类型有 TYPE 类,接口(包括注解类型)或enum类型 FIELD 声明在字段上(包括enum实例) METHOD,声明在方法上 PARAMETER,声明参数 CONSTRUCTOR,构造器的声明 LOCA ...

Read more »

责任链模式

Posted on 2019-04-10 | Edited on 2019-05-02 | In 设计模式

责任链模式有多个对象, 每个对象都持有下一个对象的引用,这样就会形成一条责任链,请求在这条链上进行传递,知道某一对象决定处理该请求.但是发出者并不知道那个对象处理的请求.责任链模式的好处就是在隐瞒客户端的情况下,对系统进行动态的调整.类结构图三个继承了Handle的类组成了一个责任链,每个对象获取请求后都会看自己是否能处理,不能处理则放在最顶端. handle抽象类public abstract class Handle { protected Handle successor; void SetSuccessor(Handle successor){ ...

Read more »

Java 8元空间

Posted on 2019-04-09 | Edited on 2019-05-08 | In java

Java 8元空间今天想要测试方法区空间溢出会怎么样,然后调试了半天.使用String,静态变量,发现最后都是heap space OOM,经过一番学习,发现一些Java 8 中的一些改变.记录一下.在java 8中方法区也就是永久代已经是不存在了,出现了一个替代者:元空间. 元空间Java 8Hotpot JVM开始使用本地化的内存存放类的元数据,这个空间也叫作元空间(Metaspace).它存储在native heap中,不受jvm内存限制,仅仅只受本地内存的限制.Java Hotpot明确了元数据空间从操作系统请求空间,然后将其分成块.每个类加载器有一个块.类加载器从其块中为元数据分配空 ...

Read more »

适配器模式

Posted on 2019-04-09 | Edited on 2019-05-02 | In 设计模式

适配器模式适配器模式主要是用来将某个类的接口转换成客户端期望的另一个接口的形式.目的用于消除接口的不兼容问题,主要分为三类,接口的适配器模式,类的适配器模式,对象的适配器模式. 类的适配器模式 源类 :public class Source { public void method1(){ System.out.println("source的方法1"); }} 目标类:public interface Targetable { public void method1();//与source一样 pub ...

Read more »

建造者模式

Posted on 2019-04-09 | Edited on 2019-05-02 | In 设计模式

建造者模式就是讲一个复杂对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示.如果我们使用了建造者模式,用户只需要指定需要构造的类型就可以得到它们,而具体建造的过程和细节就不需要知道.在这里建造者类是为了表示要建造的对象的不同种类.通过多个建造类可以实现建造一个种类的不同对象.指挥者主要是为了防止在建造的时候出错,因为建造的时候可能会有很多步骤或者顺序,防止步骤缺失或者顺序相反.起到一个管理的作用 举例: 要建造的对象:public class Person { private String head; private String body; pri ...

Read more »

策略模式

Posted on 2019-04-08 | Edited on 2019-05-02 | In 设计模式

策略模式策略模式就是定义一系列的算法,并且将算法封装起来,使他们可以相互替换,并且算法的替换不会使用客户端,需要设计一个接口,为一系列实现提供一个统一的方法,多个实现类实现该j接口,设计一个抽象类,提供辅助函数.从概念来看,所有的算法完成的都是相同的工作,只是实现不同.在一个上下文中完成对算法的改变,每次要新增一个算法只需要在新增一个实现类就可以 具体例子: 抽象接口:封装了算法对外的同意接口public interface Sort { public void sort(int[] arr) ;} 具体实现类:public class QuickSort impl ...

Read more »

单例模式

Posted on 2019-04-08 | Edited on 2019-04-11 | In 设计模式

单例模式单例模式在很多应用程序中有很多应用.比如说一个全局的工厂,一个threadlocal等等.要实现一个好的单利对象有很多种方法,可以挑选自己最喜欢的.//饿汉式 在不要求一些性能方面可以这个样子public class Simple { private static Simple instance = new Simple(); private Simple(){ // } public static Simple getInstance() { return instance; } ...

Read more »

工厂方法模式

Posted on 2019-04-08 | Edited on 2019-05-02 | In 设计模式

工厂方法模式在简单工厂模式中有个坏处就是,类的创建需要依赖工厂,也就是说如果要扩展类的功能需要对工厂类进行修改,这违背了开闭原则,所以从设计考虑,有一定问题.所以有了工厂方法模式,创建一个工厂接口和多个工厂实现类,这样一旦需要增加新的功能,直接增加工厂类就可以了,不需要修改以前的代码,只需要在添加一个工厂类.符合开闭原则.举例: 类接口:public interface Sender { public void send();} 实现类:public class MailSender implements Sender { @Override p ...

Read more »
1…345
fishman

fishman

50 posts
17 categories
20 tags
RSS
GitHub
© 2019 fishman
Powered by Hexo v3.8.0
|
Theme – NexT.Pisces v7.1.0
|