架构设计
amurocrash
这个作者很懒,什么都没留下…
展开
-
闲来无事自己设计个类无双的RPG,没界面,纯业务逻辑(持续更新)
话不多说,直接上UML,第一步,建造者实现武将的chu'sh原创 2014-09-21 17:11:40 · 1426 阅读 · 3 评论 -
Java层热修复框架实践
结合上一篇研究的内容,我们在这一篇实现一个简单的HotFix框架。上一篇有一个重要的内容没有讲,就是在实现方法的替换后,原来的方法中的内存就会被覆盖,如果我们还想要调用原来的方法怎么办呢?所以我们需要找个地方把原来的方法存起来,不过在具体实现的时候,会遇到一个问题,就是 Java的非static,非private的方法默认是虚方法,在调用这个方法的时候会有一个类似查找虚函数表的过程:mirror::原创 2017-10-09 08:39:33 · 666 阅读 · 0 评论 -
轻量级多线程断点续传下载框架
我又来了,一个月写了三个小框架我也是屌屌的。一般的小项目,遇到下载的问题时都是简单的开一个线程然后通过流的方式来实现。少量的下载,文件也比较小的的时候,这样的方式都是OK的。但是如果真要做一款下载为主要功能的app的时候,或者项目中涉及大量下载任务的时候,首先,单线程下载速度慢的感人,其次,用户想要自由的暂停一些任务开始一些任务,而不是开始了就停不下来,另外,即使用户退出了,下次再点击下载的时候,如原创 2016-11-08 11:04:22 · 1669 阅读 · 0 评论 -
简单例子教你理解ImageLoader
图文并茂是现代app的发展趋势,而随着移动互联网的发达,大家也不可能把图片写死在客户端,所以动态加载服务器上的图片成为了app起码的能力之一。当图片较少时,一般使用AsyncTask就能解决问题,但是当同屏包含大量图片的时候,简单的单线程单图片的解决方案就会遇到性能和效率的瓶颈,这时候ImageLoader框架就应运而生了。Github上成熟的框架很多,这里不会纠结于具体的功能,主要通过简单的dem原创 2016-11-07 14:19:06 · 1057 阅读 · 0 评论 -
教你写Http框架(二)——三个例子带你深入理解AsyncTask
自己在面试中发现大量的安卓开发者完全不了解AsyncTask的原理和技术细节,而AsyncTask的思想在我们设计app框架和性能调优的时候是非常有用的。所以这里特地写一篇关于AsyncTask的博文。老规矩,我的习惯还是通过写demo,把核心技术一点点剥离出来,一步步看完你就能深入理解其技术本质了。原创 2016-03-13 13:37:52 · 4161 阅读 · 2 评论 -
教你写Http框架(一)
大家都知道,从本质上来说app实际只是整个大系统当中的View层,因为设计优秀的系统中,app基本都不会承担任何实际的业务逻辑处理,只是负责向用户展示数据以及从用户端搜集用户数据。而这个数据的一来一去,自然离不开网络通信协议,而我们用得最多的,自然是这个http协议。目前优秀的第三方http框架有很多,例如volley,okHttp等,但是从我目前给一些开发者面试的结果来看,很多安卓开发者对http原创 2016-02-18 16:59:04 · 1970 阅读 · 8 评论 -
简单的Dialog框架(让你像使用Activity一样使用Dialog)
最近开发中遇到一个问题,就是在一个Activity启动后,后续的大量流程都由Dialog来承载。Android提供的Dialog其实大部分情况下只是一个Alert的作用,并不是一个能承载复杂业务的Controller,所以在Dialog之间互相跳转需要传递值或回调时,就会遇到问题。前人写的代码中包含了大量dialog互相传递的代码,比如ADialog跳转到BDialog之后,BDialog的某个操作原创 2015-12-16 15:27:21 · 3788 阅读 · 2 评论 -
通过Demo了解AlertDialog的构造原理
这两天看Android源码的时候,涉及到了比较常用的一个封装类:AlertDialog,众所周知这个Dialog封装了常用的Dialog使用的方法和样式,十分方便,也可以自定义很多想要的东西。这些不重要,里面比较精妙的我想就是那个Builder了,我们经常会在代码中这样优雅地构建一个AlertDialog。 public void showDialog() { Ale原创 2015-11-08 22:54:15 · 3157 阅读 · 5 评论 -
详述Android插件化原理
本文基于singwhatiwanna的开源DL插件框架讲述,修改并重构了一些内容,任总的blog原理讲得比较浅,这里我基于自己的理解再详细讲一点东西,也算是一个记录吧~预备知识: 一. Java ClassLoader 作用: 加载Class文件到JVM,以供程序使用的。我们知道,java程序可以动态加载类定义,而这个动态加载的机制就是通过Clas原创 2015-07-20 10:52:00 · 6213 阅读 · 3 评论 -
也谈Volley的二次封装
产品中使用Volley框架已有多时,本身已有良好封装的Volley确实给程序开发带来了很多便利与快捷。但随着产品功能的不断增加,服务器接口的不断复杂化,直接使用Volley原生的JSONObjectRequest已经导致Activity或Fragment层中耦合了大量的数据解析代码,同时当多处调用同一接口时,类似的数据解析代码还不可复用,导致大量重复代码的出现,已经让我越发地无法忍受。基于此,最近原创 2015-03-14 08:30:48 · 3162 阅读 · 8 评论 -
命令模式+备忘录模式,实现可撤销重做的计算器
老规矩,先上图再分析:1.命令模式部分: IOperation为命令的接收者,ICommond为命令接口,AbstractCommond实现了基础的命令功能,其他命令在其基础上拓展,Caculator为命令的Invoker,封装命令模式的细节,负责向上层提供方法。2.备忘录模式部分 IMemento为备忘录接口,设计为窄接口,IOperation相当于oraginat原创 2014-12-02 16:29:25 · 3690 阅读 · 0 评论 -
教你写Http框架(三)
一拖拖一年系列…… Orz 其实发这篇是因为最近正好有机会写了个小的http框架,其实根本都不能叫框架,就是个工具类,不过呢,经过几年的磨练我也深刻的感受到了一点:设计是个好东西,但是设计过度却是一个魔鬼。看多了Android的源码会感受到其实设计时度的把握可能比设计本身还重要,比如800多k的一个View类,如果用设计模式强行设计重构的话,估计能写出来几百个文件吧。把理论用到实践中是技术,但是这原创 2017-11-22 17:25:35 · 502 阅读 · 0 评论