随笔分类 -  设计模式

Java 设计模式
摘要:前言 很多项目使用流行的Rxjava2 + Retrofit搭建网络框架,Rxjava现在已经发展到Rxjava2,之前一直都只是再用Rxjava,但从来没有了解下Rxjava的内部实现,接下来一步步来分析Rxjava2的源码,Rxjava2分Observable和Flowable两种(无被压和有被 阅读全文
posted @ 2018-09-28 16:30 linghu_java 阅读(1212) 评论(0) 推荐(0)
摘要:一、 android应用内消息传递的方式: 1. handler方式 不同线程间传递消息。 2. Interface接口回调方式 任意两个对象。 3. Intent进行组件间通信,广播方式。 二、单例比较好的写法: private static volatile EventBus defaultIn 阅读全文
posted @ 2018-04-29 15:00 linghu_java 阅读(3205) 评论(0) 推荐(0)
摘要:行为模式:职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式等十一种模式。 阅读全文
posted @ 2018-04-28 11:26 linghu_java 阅读(219) 评论(0) 推荐(0)
摘要:概述 结构型模式共七种: 适配器模式(Adapter) 外观模式(Facade) 桥接模式(Bridge) 装饰器模式(Decorator) 代理模式(Proxy) 享元模式(Flyweight) 组合模式(Composite) 其中又分为 接口适配:适配器、外观、桥接模式 行为扩展:装饰 性能与对 阅读全文
posted @ 2018-04-27 17:03 linghu_java 阅读(463) 评论(0) 推荐(0)
摘要:桥接模式将抽象与具体实现分离,使得抽象与具体实现可以各自改变互不影响。桥接模式属于设计模式中的结构模式。 桥梁模式涉及的角色 抽象(Abstraction)角色:抽象定义,引用对接口对象的引用。 重新抽象(RefinedAbstraction)角色:重新抽象化角色,对父类中抽象的重新定义。 待实现接 阅读全文
posted @ 2018-04-27 11:00 linghu_java 阅读(280) 评论(0) 推荐(0)
摘要:一、模式定义 外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。 二、模式结构 外观模式包含如下角色: 阅读全文
posted @ 2018-04-27 10:16 linghu_java 阅读(199) 评论(0) 推荐(0)
摘要:1. 适配器模式简介 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适用场景: 1、已经存在的类的接口不符合我们的需求; 2、创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类( 阅读全文
posted @ 2018-04-26 15:05 linghu_java 阅读(299) 评论(0) 推荐(0)
摘要:1、设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘 阅读全文
posted @ 2018-04-20 17:34 linghu_java 阅读(183) 评论(0) 推荐(0)
摘要:一、什么是CGLIB? CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接口或者为了更好的性能,CGLIB是一个好的选择。 二、CGLIB原理 CGLIB原理:动态生成一个要 阅读全文
posted @ 2018-04-20 17:28 linghu_java 阅读(7522) 评论(0) 推荐(1)
摘要:[java] view plain copy print? /* * 观察者模式 * 定义对象间的一种一个(Subject)对多(Observer)的依赖关系,当一个对象的状态发送改变时,所以依赖于它的 * 对象都得到通知并被自动更新 * * 当然,MVC只是Observer模式的一个实例。Obse 阅读全文
posted @ 2016-09-20 16:42 linghu_java 阅读(287) 评论(0) 推荐(0)
摘要:装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上一些责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以 阅读全文
posted @ 2016-08-03 15:29 linghu_java 阅读(253) 评论(0) 推荐(0)
摘要:一、观察者模式定义 如上图所示(截取自《Head First Design Patterns》一书),主要包括四个部分: 1. Subject被观察者。是一个接口或者是抽象类,定义被观察者必须实现的职责,它必须能偶动态地增加、取消观察者,管理观察者并通知观察者。 2. Observer观察者。观察者 阅读全文
posted @ 2016-08-02 10:50 linghu_java 阅读(341) 评论(0) 推荐(0)
摘要:一、组合模式定义 将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。Compose objects into tree structures to represent part-whole hierarchies. Composite lets cli 阅读全文
posted @ 2016-08-02 10:32 linghu_java 阅读(387) 评论(0) 推荐(0)
摘要:享元模式 定义:共享元对象,运用共享技术有效地支持大量细粒度对象的复用。如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用创建新的对象。 享元模式是为数不多的、只为提升系统性能而生的设计模式,主要作用就是复用大对象(重量级对象),以节省内存空间和对象创建时间。 面向 阅读全文
posted @ 2016-08-02 09:42 linghu_java 阅读(2854) 评论(0) 推荐(1)
摘要:class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象: class字 阅读全文
posted @ 2016-07-28 14:51 linghu_java 阅读(2758) 评论(1) 推荐(1)
摘要:代理设计模式 定义:为其他对象提供一种代理以控制对这个对象的访问。 1. 静态代理 静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象都实现相同的接口或者是继承相同父类。 接口:IUserDao.java /** * 接口 */ public interface IUserDao { vo 阅读全文
posted @ 2016-07-27 15:46 linghu_java 阅读(406) 评论(0) 推荐(0)
摘要:原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式结构图 原型模式结构图 通俗来说:原型模式就是深拷贝和浅拷贝的实现。 浅拷贝 只实现了值拷贝,对于引用对象还是指向原来的对象。 父类实现clone方法,子类没有实现clone方法,其效果是浅拷贝 阅读全文
posted @ 2016-07-21 17:28 linghu_java 阅读(256) 评论(0) 推荐(0)
摘要:创建型模式共5种,单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。 单例模式 定义:确保某一个类的实例只有一个,而且向其他类提供这个实例。 单例模式的使用场景:某个类的创建需要消耗大量资源,new一个对象代价太大,如访问IO和数据库等资源,或者避免多次创建该对象消耗内存过多。 懒汉模式是 阅读全文
posted @ 2016-07-21 17:14 linghu_java 阅读(801) 评论(0) 推荐(0)
摘要:工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类。工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory)。2:工厂方法(Factory Method)。3:抽象工厂(Abstract Factory)。简单工厂(Simple Factor 阅读全文
posted @ 2016-07-21 17:06 linghu_java 阅读(639) 评论(0) 推荐(0)
摘要:定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 类型:创建类模式 类图: UML图 四个要素 Builder: 抽象建造者ConcreteBuilder: 具体建造者Director: 指挥者Product: 产品角色 产品类:一般是一个较为复杂的对象,也就是说创建 阅读全文
posted @ 2016-07-15 15:22 linghu_java 阅读(250) 评论(0) 推荐(0)