itbird01
细节决定成败,专注决定高度
展开
-
Android源码设计模式探索与实战【外观模式】
外观模式是结构型设计模式的一种。外观模式在开发中的使用频率很高,您肯定在开发中用过使用外观模式的sdk、框架API,甚至与自己写过相关的代码。外观模式,通过一个外观类将整个系统的所有功能,通过统一的高层接口对外公开,这样客户端只需关心通过这个接口想要使用的系统功能,不需要去关心具体的功能调用了哪个对象去实现的。这样做的好处的话,就是即使哪天替换了这个对象,针对于客户端来说也许是无感知的,因为高层的接口是不变的,变的是外观类里面使用了新的对象去实现这个功能而已。ILoadImage接口即可/**......原创 2022-07-15 10:45:39 · 689 阅读 · 45 评论 -
Android源码设计模式探索与实战【享元模式】
理解:享元模式是行为型设计模式的一种。依然老办法,我们想从字面意思理解一下,“享”正常我们理解这个字,在现实生活中,有享受、共享的意思,转换到代码的世界中,那么靠的上边的应该是共享。“元”,最近网络流行一个词语,元宇宙,代表根本、本源的意思,这里可以这样理解。那么从这两个字结合理解,享元模式应该是用于共享对象的一种设计模式。那么有一个问题,为什么要共享对象?我们知道,在编程过程中,不可避免的要使用到内存,对象如果大规模创建,会带来内存溢出和GC频繁导致卡顿的问题。享元模式是对象池的一种实现,它用来尽可能的原创 2022-07-12 11:40:04 · 759 阅读 · 3 评论 -
Android源码设计模式探索与实战【迭代器模式】
理解:迭代器模式是行为型设计模式的一种。日常研发过程中,我们一般会说版本迭代,代表的是版本的顺序增长。还有一个字“器”,器一般是指工具,所以“迭代器”这个词从整体看,就是提供了一种迭代的工具。问题来了,工具是给谁来使用的,java中有集合的概念,例如:List、hashmap、vendor、array。看来,迭代器应该是给这些集合类提供的一种统一的、顺序访问其中元素的方法。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。之前我们说到过,如何区分一个模式,是结构型设计模式,还是行为型设计模原创 2022-07-11 16:05:17 · 372 阅读 · 9 评论 -
Android源码设计模式探索与实战【原型模式】
理解:原型模式是创新型设计模式的一种。我们先从字面理解一下,“原型”这个词,一般是相对存在的,说明存在它的复制体或者克隆体存在。那么这时有了一个问题,为什么要去克隆一个对象呢?既然有原型存在,那说明这个对象是可以通过new创建的,为什么我还要去复制呢?这也就是原型模式存在的真正意义了。往往我们需要复制的对象,它的创建过程复杂 or 创建耗时,所以这时直接去复制,肯定是性能最好的一种方式。定义:原型模式用于创建重复的对象,通过拷贝这些原型创建新的对象。角色:Client: 客户端用户Prototype:原创 2022-07-11 15:31:45 · 438 阅读 · 12 评论 -
Android源码设计模式探索与实战【代理模式】
理解:代理模式是结构性设计模式的一种。在软件开发中我们常常会遇到这样的情况,有些对象,我们不想客户端可以直接访问,或者我们不想客户端可以访问到这个对象的一些操作方法,所以需要一个“中介”的角色。举个例子,卖房子的人为了减少频繁的电话&看房等麻烦,会把自己的房子托给中介,中介替他去找合适的买家,针对于买房的人来说,买这套房子,只能通过中介去了解,而不能直接打电话给房主。定义:为一个对象提供一个替身,以控制对这个对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中原创 2022-07-05 16:56:31 · 758 阅读 · 13 评论 -
Android源码设计模式探索与实战【适配器模式】
理解:适配器模式是结构型设计模式的一种。在软件日常开发中,有一些现有的对象或者实现,当我们需要用到时,可能会面临这样的问题,这个对象并不是我们要求的接口类型。比如:您现在正在开发一个模块A,里面统一的输入是要求接口A类型的对象,可是现在系统要求介入一个现有的实现类B的功能,那么此时显然只有两种做法:1)将A模块的输入,做扩充,可以支持B类型的输入,对B类型的数据做转换,但是这样有一个不好的地方,就是需要修改现有的A模块,也就是客户端。2)在B接口的基础上,去封装adapter,adapter去实现A接口,原创 2022-07-01 15:35:44 · 1078 阅读 · 9 评论 -
Android源码设计模式探索与实战【策略模式】
理解:策略模式是行为型设计模式的一种。在软件开发中我们常常会遇到这样的情况,实现某一个功能时可以有多种方法和策略,我们可以根据实际情况,选择不同的算法或者策略。例如我们想排序一个数组,有冒泡排序、插入排序、快速排序等,我们可以把这些方法统一写入一个类中,通过if判断或者声明为不同的static方法,然后client去调用选择算法。但是这样做的坏处显而易见,就是每次新增算法,都需要去修改这这个类,这个类会越来越臃肿,代码逻辑会越来越复杂,后续迭代升级维护困难,而且后来修改者,如果不小心修改了已有算法的某处代原创 2022-06-29 11:17:41 · 824 阅读 · 44 评论 -
Android源码设计模式探索与实战【模板模式】
IT行业,一直讲一句话,拼到最后都拼的是“内功”,而内功往往就是指我们处理问题的思路、经验、想法,而对于开发者来说,甚至对于产品也一样,都离不开一个“宝典”,就是设计模式。今天我们一起借助Android源码去探索一下适配器模式的优缺点,以及它所想要去解决的问题。同时结合我工作经验中的一个小例子,来总结实践一下。1.背景&定义理解:适配器模式是结构性设计模式的一种。首先把这个名词可以分开理解一下什么是责任?–我们平常生活中,说‘某某事情是谁的责任内的事情’,一般这样说,想要表达的意思就是说.原创 2022-06-17 15:33:19 · 492 阅读 · 22 评论 -
Android源码设计模式探索与实战【装饰者模式】
理解:装饰者是结构性设计模式的一种。我们一般用这个词,是指对于本身事物没有去改变他,而是给他加了一个外框装饰,是为了这个事物。在代码的世界中,就是对于某一对象的装饰。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。它是作为现有的类的一个包装。定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。Component:可原创 2022-06-15 15:23:01 · 455 阅读 · 20 评论 -
Android源码设计模式探索与实战【工厂模式】
理解:工厂模式是创建性设计模式的一种。从这个词来理解,工厂一般是用来生成产品的统一接口,例如:我们可以从4S点预定某台车,而不需要关心车是怎么制造出来的。针对于开发调用工厂模式的接口,一般不会去关心内部工厂产生对象的细节,返回调用者所需对象即可。定义:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。在任何需要生产对象的地方,都可以使用工厂方法模式。但是,还需有以下限制,不可滥用(1)工厂一般是具有单一智能的,是生产某类功能的产品,只不过这些产品功能的实原创 2022-06-02 16:28:18 · 358 阅读 · 0 评论 -
Android源码设计模式探索与实战【建造者模式】
IT行业,一直讲一句话,拼到最后都拼的是“内功”,而内功往往就是指我们处理问题的思路、经验、想法,而对于开发者来说,甚至对于产品也一样,都离不开一个“宝典”,就是设计模式。今天我们一起借助Android源码去探索一下单例模式的优缺点,以及它所想要去解决的问题。同时结合我工作经验中的一个小例子,来总结实践一下。1.背景&定义理解:单例模式是创建性设计模式的一种。是我们最常见、也可能是开发者肯定会使用的一种设计模式。先从单例这个词来理解,在应用这个设计模式的时候,单例对象必须保证全局只有一个.原创 2022-06-01 11:28:40 · 488 阅读 · 3 评论 -
Android源码设计模式探索与实战【单例模式】
IT行业,一直讲一句话,拼到最后都拼的是“内功”,而内功往往就是指我们处理问题的思路、经验、想法,而对于开发者来说,甚至对于产品也一样,都离不开一个“宝典”,就是设计模式。今天我们一起借助Android源码去探索一下单例模式的优缺点,以及它所想要去解决的问题。同时结合我工作经验中的一个小例子,来总结实践一下。1.背景&定义理解:单例模式是创建性设计模式的一种。是我们最常见、也可能是开发者肯定会使用的一种设计模式。先从单例这个词来理解,在应用这个设计模式的时候,单例对象必须保证全局只有一个.原创 2022-05-25 14:43:26 · 480 阅读 · 6 评论 -
Android源码设计模式探索与实战【面向对象六大基本原则】
IT行业,一直讲一句话,拼到最后都拼的是“内功”,而内功往往就是指我们处理问题的思路、经验、想法,而对于开发者来说,甚至对于产品也一样,都离不开一个“宝典”,就是设计模式。今天我们一起借助Android源码去探索一下设计的六大基本原则。同时结合我工作经验中的两个例子,来总结实践一下。1.背景&定义定义:设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。理解:设计模式是什么?设计模式(Desi.原创 2022-03-29 20:41:27 · 3095 阅读 · 68 评论 -
Android源码设计模式探索与实战【责任链模式】
IT行业,一直讲一句话,拼到最后都拼的是“内功”,而内功往往就是指我们处理问题的思路、经验、想法,而对于开发者来说,甚至对于产品也一样,都离不开一个“宝典”,就是设计模式。今天我们一起借助Android源码去探索一下责任链模式的优缺点,以及它所想要去解决的问题。同时结合我工作经验中的一个小例子,来总结实践一下。1.背景&定义理解:责任链模式是行为型设计模式的一种。首先把这个名词可以分开理解一下什么是责任?–我们平常生活中,说‘某某事情是谁的责任内的事情’,一般这样说,想要表达的意思就是说.原创 2022-03-16 14:52:01 · 865 阅读 · 22 评论 -
Android源码设计模式探索与实战【观察者模式】
IT行业,一直讲一句话,拼到最后都拼的是“内功”,而内功往往就是指我们处理问题的思路、经验、想法,而对于开发者来说,甚至对于产品也一样,都离不开一个“宝典”,就是设计模式。今天我们一起借助Android源码去探索一下观察者模式的优缺点,以及它所想要去解决的问题。同时结合我工作经验中的一个小例子,来总结实践一下。1.背景&定义理解:观察者模式是行为型设计模式的一种。首先我们理解一下这个名词,有观察者,那么肯定相对就有被观察者,观察的目的是什么,那肯定是被观察者“有所变化的时候”,观察者可以‘.原创 2022-03-16 14:51:33 · 886 阅读 · 6 评论