自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 jdk8源码分析-第一天-集合框架总述

集合框架体系结构图如下:位于java.util包下,其中LinkIterator应该是写错了,因为jdk中没有这个类,应该是ListIterator,它功能相对Iterator更多,且只能用于List的遍历。1、ArrayList、LinkedList、Vector、Stack:它们都是List下面的实现类,相同点是都有序,允许重复,允许null值,可以用Collections.synch...

2019-11-15 00:09:38 163

转载 jdk学习内容(1.8)

版权声明:本文为原博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/application_context/article/details/807542101、java.lang包下的80%以上的类的功能的灵活运用。2、java.util包下的80%以上的类的灵活运用,特别是集合类体系、正...

2019-11-03 16:31:22 202

原创 设计模式-26.总结

gof设计模式共23种:分为3类创建型:1、工厂方法模式2、抽象工厂模式3、单例模式4、建造者模式5、原型模式其中单例和原型模式很好理解,也很常用,主要是单例的6种实现方法要清楚,且各针对哪些场景:饿汉式适合大部分场景,但没有懒加载,如果明确要求懒加载考虑内部类或双检锁方式,如涉及反序列化使用枚举方式,单线程下使用线程不安全的懒汉式,线程安全的懒汉式性能太低,不推荐使用。工厂系列:先说...

2019-11-02 22:06:26 132

原创 设计模式-1.总述

面向对象三大特性:继承:略 封装:通过权限修饰符,隐藏不想暴露的数据或方法,只对外提供想暴露的方法。 多态:相同的消息作用于不同的对象,会产生不同的响应。简单的说就是父类的引用指向子类的实例面向对象六大原则:单一职责原则:类的设计尽量只做一件事,降低耦合,提高重用性。 依赖倒置原则:依赖抽象,不依赖具体实现。(这句话本来就很抽象、简单来说就是面向接口或抽象类编程。) 迪米特法则:...

2019-11-02 14:46:11 95

原创 设计模式-17.迭代器模式

定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示使用场景:遍历的场景,提供如开始、下一个、是否结束、等统一的接口。实现:创建迭代器接口和聚集抽象类,迭代接口提供:获取第一个元素,下一个元素,是否还有下一个元素的方法。具体聚合抽象类添加创建迭代器方法。最后实现类分别实现优点:提供聚集类的多种遍历方式,简化聚集类的使用代码示例:迭代器/*** 迭...

2019-11-02 14:45:46 211

原创 设计模式-15.备忘录模式

定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。使用场景:需要恢复状态场景,提供一个回滚的操作实现:创建备忘录类,封装要保存的数据。发起者增加保存状态的方法,返回封装了当前对象数据的备忘录类对象,并提供恢复状态的方法,创建状态管理者类,保存备忘录类对象以便需要恢复时提供数据优点:提供可恢复的操作,并且不破坏封装性...

2019-11-02 14:45:39 71

原创 设计模式-11.动态代理解决观察者模式弊端

观察者模式弊端:虽然观察者模式将依赖倒转原则做的很好,但是还是依赖了观察者的抽象接口,但是有些场景并不能抽象出观察者,比如引用的jar或者观察者做出的反应并不是同一类操作。java委托机制:利用反射机制实现动态代理。实现:定义事件类,封装被代理的类及要代理的方法和方法的调用,定义事件管理类,定义增加事件类对象和调用所有事件类代理方法。定义统治者类,聚合事件管理器,定义抽象方法增加事件和通知...

2019-11-02 14:45:27 269

原创 设计模式-2.策略模式

定义:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。使用场景:多个类完成相同的工作,只是实现不同,经典场景:商场收银打折实现:定义一个策略父接口,所有策略实现类去实现这个接口,然后定义一个使用算法的上下文类,以成员变量的形式聚合策略接口,通过构造方法传入具体策略实现类优点:1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。缺点:1、策略类会增...

2019-11-02 14:45:20 83

原创 设计模式-25.访问者模式

定义:表示一个作用于某个对象结构中的各元素操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。使用场景:数据结构稳定,算法不稳定,使作用于结构上的操作解耦实现:定义一个被访问的抽象类,声明一个接受访问者的方法。定义访问者抽象类,声明与被访问者相同个数且一一对应的方法,接着可以扩展访问者类,实现增加访问操作,最后定义一个枚举被访问者的类,提供一个高层接口以允许访问者访问它的...

2019-11-02 14:45:09 125

原创 设计模式-22.中介者模式

定义:用一个中介者对象来封装一系列的对象交互。中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。使用场景:一堆类需要相互通信构造蜘蛛网结构时,就需要使用中介者降低耦合实现:定义中介者类,包含通信对象的实例,声明通信方法。定义通信对象抽象类,包含一个中介者类实例,声明通信方法,方法中调用中介者的通信方法,传参为消息+自己的引用。优点:解耦通信者缺...

2019-11-02 14:44:55 118

原创 设计模式-24.解释器模式

定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。使用场景:1、可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。 2、一些重复出现的问题可以用一种简单的语言来进行表达。 3、一个简单语法需要解释的场景。实现:定义上下文类,包含一些全局信息,定义抽象表达式类,声明解释方法,入参为待解释的内容,定义实现类用来解释各种文法句子。...

2019-11-02 14:44:44 93

原创 设计模式-21.责任链模式

定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止使用场景:一连串对象处理一个请求的场景实现:定义一个请求处理抽象类,包括一个自己的对象,作为后继处理者,定义处理方法包括处理逻辑和交给下一个处理者处理的调用代码优点:减少请求者与处理者的耦合代码示例:日志系统,当前级别大于等于日志处...

2019-11-02 14:44:23 115 1

原创 设计模式-13.状态模式

定义:当一个类的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类使用场景:1.当控制一个对象状态转换条件表达式过于复杂的情况,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。2.当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑状态模式了实现:定义状态接口以及若干个状态实现类,接口定义一个设置状态方法。定义Conte...

2019-11-02 14:44:05 72

原创 设计模式-20.命令模式

定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。使用场景:认为是命令的地方都可以使用命令模式实现:定义命令接口,执行者类,命令聚合执行者,定义请求发起者,聚合命令列表优点:执行者与请求者解耦代码示例:饭店点菜,有厨师(执行者)、客人(请求者)、服务员(通知者)/*** 命令接口-菜单* @aut...

2019-11-02 14:43:49 89

原创 设计模式-7.模板模式

定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。使用场景:当某一过程需要由一系列步骤组成,该过程从高层次上看是相同的,但有些步骤的实现可能不同。实现:定义抽象父类,将一系列步骤定义为抽象方法,最后定义一个方法入口,按照给定步骤的顺序调用这些抽象方法,而方法的实现推迟到子类。优点:代码复用代码示例...

2019-11-02 14:43:32 107

原创 设计模式-10.观察者模式

定义:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。使用场景:一个对象变化将导致其他一个或多个对象发生变化。实现:定义抽象主题类,包含一个list类型的观察者列表,定义增加和删除观察者的方法和状态改变方法以及通知观察者的notify方法,用来循环遍历调用观察者的更新方法。定义观察者接口(为什么...

2019-11-02 14:43:22 121

原创 设计模式-4.代理模式

定义:为其他对象提供一种代理以控制对这个对象的访问。使用场景:代理模式的使用场景比较多,而且不好理解,这里去查了下资料,大致如下:1、远程代理。 2、虚拟代理。 3、保护(Protect or Access)代理。远程代理:要访问的对象在远程机器上虚拟代理:创建开销很大的对象。直接访问会给使用者或者系统结构带来很多麻烦,我们可以创建代理保护代理:增加对象访问权限控制实现...

2019-11-02 14:42:11 75

原创 设计模式-23.享元模式

定义:运用共享技术有效地支持大量细粒度的对象。使用场景:如果一个应用使用了大量的对象,而大量的对象造成了很大的存储开销时就应该考虑使用享元模式;还有就是对象的大多数状态是外部状态,如果删除外部状态,那么就可以用相对较少的共享对象取代很多组对象,此时可以考虑使用享元模式。实现:定义享元工厂,包括共享对象集合,定义共享抽象类,定义共享类的外部状态类。实例化共享类时传入外部状态类优点:大大减...

2019-11-02 14:41:35 129

原创 设计模式-8.外观模式

定义:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得子系统更加容易使用。使用场景:当子系统的接口过于复杂时,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层,业务逻辑层和表示层的层与层之间建立外观。以达到简化目的,降低耦合实现:建立外观类,聚合子系统各个接口,定义对外公开的简洁方法优点:降低复杂接口使用难度,降低耦合性代码示例:刚工作租房子...

2019-11-02 14:41:06 91

原创 设计模式-3.装饰器模式

定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。使用场景:在不想增加很多子类的情况下扩展类的功能。实现:定义一个抽象类或接口继承或实现要被装饰对象的父接口(如果有父接口的话),然后在该接口中聚合一个被装饰类对象(成员变量),创建实现类,定义新功能,在调用被修饰类某个方法时就可以调用新功能。优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模...

2019-11-02 14:39:35 133

原创 设计模式-16.组合模式

定义:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。使用场景:具有部分-整体结构的场景,如树形菜单,文件夹操作等实现:树枝内部组合自己的list属性优点:高层模块调用简单代码示例:文件夹展示操作/*** 文件夹接口* @author liuhao**/public abstract class F...

2019-11-02 14:35:21 77

原创 设计模式-19.桥接模式

定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。使用场景:实现系统可能有多个角度分类,每一种角度都可能变化。实现:实现系统可能有多角度分类,把这些分类分离出来,用聚合代替继承优点:主要是扩展灵活代码示例:比如画一个图形可以有多种角度,颜色和形状等,并且这个维度都存在多种变化。如果使用继承,就会出现两级继承,如果维度变大,则会变得更多。使用桥接如下:/*** ...

2019-11-02 14:33:48 146

原创 设计模式-14.适配器模式

定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作了。使用场景:系统需要使用现有的类,而此类的接口不符合系统的需要实现:定义适配器类,继承要转化为某个对象方法的类,聚合要适配接口的类对象,重写继承方法,方法调用适配接口优点:让两个没有关联的类在一起运行,提高代码重用性代码示例:手机充电接口转换/*** ...

2019-11-02 14:32:37 86

原创 设计模式-6.原型模式

定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。使用场景:要创建大量相同类型的对象时实现:实现Cloneable接口,该接口是一个标记接口,并没有要实现的方法,不实现会抛出不支持克隆异常。然后重写Object的clone方法即可。优点:避免写大量new对象的操作,提高性能,在构造方法较复杂时,性能提升越明显注意点:深拷贝和浅拷贝代码示例:深拷贝简历类...

2019-11-02 14:04:26 83

原创 设计模式-18.单例模式

定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。使用场景:单例的场景实现:共有6种方法。优点:省内存,减小创建和销毁对象的开销实现单例的6种方法:1、 懒汉式-线程不安全/*** 懒汉式-线程不安全* @author liuhao**/public class SingletonA { private static Single...

2019-11-02 14:03:45 73

原创 设计模式-9.建造者模式

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示使用场景:一个产品的的构建组件及顺序是稳定的,但是组件的实现不同。实现:定义builder抽象类,定义构建各个组件的抽象方法,后面定义一个获取结果的方法。然后定义实现类,聚合一个产品对象,分别实现所有抽象方法。最后定义指挥者类,调用建造者类的各个构建方法并获取对象。优点:将变与不变分离开。代码示例:...

2019-11-02 14:03:25 90

原创 设计模式-12.抽象工厂模式

定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。使用场景:创建一系列相关或相互依赖对象的接口优点:易于改变产品系列实现:定义各个产品接口及一系列实现类,定义抽象工厂接口,提供创建一系列产品方法,定义工厂实现类,实现创建各个产品方法。缺点:如果要增加产品,需要修改抽象工厂和具体工厂的方法,增加相应的产品创建方法,不符合开闭原则。这个问题可以用简单工厂模式解决...

2019-11-02 14:00:22 153

原创 设计模式-5.工厂方法模式

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法时一个类的实例化延迟到其子类。使用场景:第一种情况,对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator() 方法即属于这种情况。第二种情况,创建对象的任务由多个具体子工厂中的某一个完成,而抽象工厂只提供创建产品的接口。第三...

2019-11-02 13:59:00 181

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除