设计模式与架构
文章平均质量分 89
Java日常开发中常用的设计模式的经验分享和感悟。
CrazyMo_
最美不过,心中有梦,身旁有你!
展开
-
设计模式——行为型模式之借助状态模式(State Pattern)在改变其状态时更新其具体行为(九)
引言原创 2018-06-22 15:21:56 · 1058 阅读 · 0 评论 -
设计模式——结构型之使用外观模式(Facade Pattern)统一编程入口(四)
引言外观模式(Facade)其实在开发过程中使用评率十分频繁,或间接或直接使用,尤其是在当前各种第三方SDK 中,相当大的概率使用了外观模式,通过一个外观类使用的整个SDK的接口只有一个统一的高层接口,降低了用户对接成本,也对用户屏蔽了具体实现细节。一、外观模式概述外观模式(Facade Pattern)是一种简单的结构型设计模式,也有翻译为门面模式的,也是一种比较常用的封装模式,...原创 2018-04-15 11:48:52 · 1035 阅读 · 0 评论 -
设计模式——结构型之借助动态代理模式(Proxy Pattern)体验"间接的美"之调用一切已知接口的方法(二)
引言前面一篇文章总结了代理模式中静态模式的使用,这一篇主要总结下动态代理模式的相关知识,照例把结构型设计模式的相关文章地址列表贴一下:设计模式——结构型之借助代理模式(Proxy Pattern)体验”间接的美”(一)一、动态代理概述前一篇文章所说根据代理类生成的时间和机制可以将代理可以分为两大类:动态代理与静态代理,静态代理则是由我们自己创建或工具生成代理类的源码,再编...原创 2018-05-12 14:11:35 · 395 阅读 · 0 评论 -
Android 进阶——以一种较为优雅的小框架替代普通回调实现Fragment和Activity之间的通信
引言前面两篇文章设计模式——面向对象进阶之面向接口再抽象实现通用的接口框架(一)和设计模式——面向对象进阶之面向接口再抽象实现通用的接口框架(二)介绍了个自己封装的一套接口小框架,目的是取代普通回调的常规方式,以期以较优雅的方式来替代常规的接口回调,具体思想和核心代码都再上面两篇文章做了详细介绍,这篇文章就直接使用那套小框架实现Fragment和Activity之间通信。一、底部导航栏...原创 2018-04-20 14:26:07 · 788 阅读 · 0 评论 -
设计模式——面向对象进阶之面向接口再抽象实现通用的接口框架(二)
引言如果你是因为上文设计模式——面向对象进阶之面向接口再抽象实现通用的接口框架(一)而过来的,可以直接往下阅读,反之就请先去阅读上文。如果采用普通的接口形式我想下面这张图在很多人的代码中都会出现过吧,尤其是Activity和Fragment的交互方面使用回调的方式来进行的话更加无可避免,看起来是不是很臃肿,不优雅而且繁琐,这套框架就是基于此设计的,这里插个题外话比较了下Activity和Fra...原创 2018-04-13 11:28:50 · 530 阅读 · 0 评论 -
设计模式——行为型之使用备忘录模式(Memento Pattern)随时回滚状态(七)
备忘录模式(Memento Pattern)是一种比较简单的行为型模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态原创 2018-03-27 14:57:10 · 1037 阅读 · 0 评论 -
设计模式——行为型模式之借助策略模式(Strategy Pattern)减少使用不必要的if-else if -else和switch-case(八)
引言前一篇文章[设计模式——行为型模式之通过中介者模式实现各模块之间的解耦 [(http://blog.youkuaiyun.com/crazymo_/article/details/73527482)总结行为型模式中的中介者模式,通过中介者模式我们可以让各模块专注于自己的核心工作,二把交互等次要问题交给中介者,实现一定程度的解耦,今天就接着总结另一种简单而又有效的行为型模式,相信大家对于if-else ...原创 2018-03-26 17:54:22 · 732 阅读 · 0 评论 -
设计模式——面向对象进阶之面向接口再抽象实现通用的接口框架(一)
接口(Interface)在JAVA编程语言中是一个抽象类型(Abstract Type),是一系列方法的声明,是一些方法特征的集合,接口里只有方法的签名(和常数声明(变量生命仅包括 static 及 final))而没有方法的具体实现,它被用来强制实现类必须实现指定的方法,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。接口无法被实例化,但是可以被实现。原创 2018-04-11 17:15:13 · 915 阅读 · 0 评论 -
设计模式——行为型设计模式之借助观察者模式(Observer Pattern)实现模块之间的解耦(四)
观察者模式(Observer Pattern)**也叫做发布/订阅模型(Publish/Subscribe)是一种行为型设计模式,其官方定义——定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新原创 2017-10-16 20:10:00 · 1007 阅读 · 0 评论 -
设计模式——行为型模式之借助策略模式(Strategy Pattern)减少使用不必要的if-else if -else和switch-case(三)
策略模式(Strategy Pattern)**也有叫做政策模式(Policy Pattern)的 是一种比较简单的行为型模式——**定义一组算法,将每个算法都封装起来,并且使它们之间可以互换原创 2017-11-14 14:13:25 · 6362 阅读 · 0 评论 -
设计模式——行为型模式之借助责任链模式(Chain of Responsibility)灵活完成链式处理(五)
引言在数据结构中有一种结构叫做 链表,从表头开始,通过下一节点的引用而连接起来形成一条链,每个节点可以断开再连接,结构比较灵活。如果把这种思想应用到编程中,构建这样的结构,那么每一个节点就可以映射为对象,每个对象都拥有一些共同的处理和独特处理逻辑,请求或提交从链头开始,逐一向下传递,直到这个请求被处理为止。正是基于这样的思想,前人提出了 责任链设计模型式。责任链模式很好的可以解决类似我们行政请...原创 2017-12-25 16:29:00 · 1427 阅读 · 0 评论 -
设计模式——结构型模式之通过适配器模式也可以让“强扭的瓜变得很甜”
适配器模式(Adapter Pattern)是一种简单的结构型模式,又叫包装器模式(Wrapper),它可以将一个类的接口变换成客户端所期待的另一种接口,从而使得原本不兼容的两个类能够在一起工作原创 2018-01-18 09:46:10 · 495 阅读 · 1 评论 -
设计模式——结构型模式之借助装饰器模式(Decorator Pattern)动态透明扩展对象的功能(三)
引言前一篇文章设计模式——结构型模式之通过适配器模式也可以让“强扭的瓜变得很甜”俗话说人靠衣妆,佛靠金装。有些时候本质需要十分重要,但是有些额外的修饰会更妙,无论是在现实生活还是编程世界中,除了本质还需要一些“外饰”才能达到最好的效果。尤其是在项目开发过程中,很多业务都充满了很多的不确定性,来自业务本身、产品、项目特性的,如果一味的使用继承来扩展的话,可能会相当不灵活,今天介绍的装饰器模式就是...原创 2018-01-19 13:35:25 · 638 阅读 · 0 评论 -
设计模式——UML建模的重要知识类图关系和基本的设计原则小结
引言UML建模我想很多人可能在学习到的时候都觉得不重要,没有意识到重要性,但是当你拥有一些实际的项目经验和深受维护升级、性能的困扰时候,你会后悔当初为啥没有重视设计模式,没有灵活运用设计模式,而设计模式最本质的思想就是面向对象、面向接口,所以众多模式之间存在着一些相似之处,需要结合具体的业务区分析,到底使用哪种设计模式,而UML建模则可以提供一些依据。一、UML类图关系概述UML主原创 2018-02-05 16:37:52 · 1237 阅读 · 0 评论 -
设计模式——行为型之命令模式(Command Pattern)让你的命令发起者和命令执行者的逻辑解耦(六)
命令模式(Command Pattern)是一个高内聚的行为型模式,将请求封装为对象,使用不同请求参数化客户端,排队或记录请求,并支持可撤销操作,其本质是对命令的抽象和封装原创 2018-02-06 16:32:24 · 1241 阅读 · 0 评论 -
设计模式——UML建模之精选核心知识类图和基本的设计原则小结(二)
UML建模之静态视图,描述类与类之间关系的类图原创 2018-02-09 14:37:42 · 558 阅读 · 0 评论 -
设计模式——创建型模式之借助原型模式(Prototype Pattern)创建保护性拷贝对象(四)
原型模式指的是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。简而言之就是在某些场景通过创建模板的副本来创建新的对象,创建副本的方式主要是通过拷贝,而拷贝又可以分为浅拷贝和深拷贝。原创 2017-06-10 11:04:12 · 510 阅读 · 0 评论 -
设计模式——行为型模式之通过中介者模式(Mediator Pattern)实现各模块之间的解耦(二)
中介者模式(Mediator Pattern)又称为调停者模式——用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互 在中介者模式中,所有参与的对象只需要知道中介者对象Mediator,其他交互对象无须考虑,他们之间所有的交互都是通过中介者对象Mediator 间接完成的原创 2017-09-27 14:30:46 · 1563 阅读 · 0 评论 -
设计模式——Android 常用设计模式之MVP详解及项目实战
MVP的全称为Model-View-Presenter,看起来只有三种角色Mode、Presenter、View,实质上是四种角色——View、View interface、Model、Presenter。原创 2017-09-04 16:53:26 · 1414 阅读 · 0 评论 -
设计模式——创建型之使用工厂模式(Factory Pattern)灵活自由创建你的产品族和方案(二)
工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。工厂模式专门负责将大量有共同接口的类实例化,工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类原创 2017-08-18 16:23:52 · 921 阅读 · 0 评论 -
设计模式——结构型之借助代理模式(Proxy Pattern)体验"间接的美"(一)
引言在古代《三国志·诸葛亮传》中有这么一句话——“政事无巨细咸于亮。”;在唐代张九龄的《谢赐大麦面状》中还有这么一句——“勤俭于生人,事必躬亲,动合天德两个典故连起来就是“事无巨细,事必躬亲”,意思是无论大事小事都要亲自过问,亲力亲为,虽然这样的精神及其可贵。但在我们当代的生活中如果我们皆事必躬亲的话,那么我们的生活将会是十分疲倦的,毕竟任何人的精力都是有限的,每一个人或事都有自己擅长的事或工...原创 2017-08-11 13:37:11 · 712 阅读 · 0 评论 -
设计模式——创建型之使用建造者模式(Builder Pattern)灵活自由创建你的对象(一)
引言我们知道Java是纯粹的面向对象的语言,现实生活中的一切事物都是可以映射为对应的Java类对象,而往往许多时候事物往往十分复杂,由很多小部件组成,我们在创建对象的时候不仅需要考虑如何创建组成这个对象的小部件,还得去考虑怎么把这些部件全部组装到一起形成一个完整的对象,这就给后期的升级增加了成本,而且耦合度也较高,此时Builder模式应运而生。一、Builder模式概述建造者模式...原创 2017-07-23 14:12:17 · 1721 阅读 · 1 评论 -
设计模式——行为型之使用模板方法(Template Method Pattern)模式尽量减少重复相似的代码段(一)
模板方法模式是一种类的行为型模式,在它的结构图中只有类之间的继承关系,没有对象关联关系。合理使用模板方法模式减少重复相似的冗余代码原创 2017-07-21 17:49:29 · 2675 阅读 · 0 评论 -
设计模式——面向接口编程之柔性多态增强代码的可扩展性
多态和封装、继承一起作为面向对象的三大特性,无论是Java还是其他面向对象的语言,灵活使用好多态,对于提高我们的编码质量尤其重要。原创 2017-06-04 14:22:10 · 1464 阅读 · 0 评论 -
设计模式——创建型模式之合理使用单例模式(Singleton Pattern)创建性能优化的对象(三)
单例模式(Singleton Pattern)是一个比较简单的模式,在使用这个模式的时候,整个程序必须确保只有一个实例的存在。原创 2017-07-06 16:05:26 · 1039 阅读 · 0 评论 -
Java进阶—— 泛型总结与应用
在1.5 前,当你把数据存入到集合的时候,需要主观去判断类型是否合法,假如你知道你定义的是String类型,而保存的时候你存了一个Integer类型的数据,编译没问题,但是运行的时候就可能导致类型转换异常**ClassCastException**,这是不安全的,而在1.5之后,引入了**泛型**并且使用了**泛型**之后,这个隐患在编译时期就被暴露出来,泛型理解为是java的一种安全机制,同时也带来了的另一种多态原创 2015-09-24 11:56:10 · 2788 阅读 · 4 评论 -
Java进阶——回调机制详解及实例
Java中的回调(callback)是很重要的一个机制。项目模块之间总是存在着一定的接口,从调用方式上看可分为三类:同步调用、回调和异步调用。其中同步调用是一种阻塞式调用,我们在开发中经常使用的;回调是一种双向的调用模式(即 被调用方的接口在被调用时也会调用对方的接口)原创 2016-08-02 22:51:35 · 1587 阅读 · 0 评论 -
Java进阶——详解反射机制及应用中的泛型类型的获取和曾经踩过的一个坑
Java反射机制(Java Reflection)是指程序在运行过程中,可以获知某个已知类或已知对象的的相关信息(包括类的方法、属性、父类等信息,还包含创建实例、判断实例类型等操作)这种动态获取信息以及动态调用对象方法的功能就是Java语言的反射机制原创 2017-05-13 12:23:20 · 1132 阅读 · 0 评论