
设计模式
文章平均质量分 57
介绍android开发中常用的设计模式
hzulwy
技术嘛!最重要的是自己理解,然后才是分享
展开
-
设计模式之享元模式
享元对象中的部分状态是可以共享,可以共享的状态称为内部状态,内部状态不会随着环境变化‘不可共享的状态则称为外部状态,它们会随着环境的改变而改变。在享元模式中会建立一个对象容器,在经典的享元模式中该容器为一个map,它的键是享元对象的内部状态,它的值就是享元对象本身。其缺点在于,享元模式使得系统更加复杂。享元模式是对象池的一种实现,用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,来缓存可共享的对象,达到对象共享、避免创建过多对象的效果,这样依赖就可以提升性能、避免内存移除等。原创 2023-02-02 00:03:12 · 112 阅读 · 0 评论 -
设计模式之迭代器模式
迭代器模式源于对容器的访问,比如java中的List、Map、数组等,我们知道对容器对象的访问必然会涉及遍历算法,我们可以将遍历的方法封装在容器中,或者不提供遍历方法。如果我们将遍历的方法封装到容器中,那么对容器类来说就承担了过多的功能,容器类不仅要维护自身内部的数据元素而且还要对外提供遍历的接口方法,如果我们不提供遍历方法而让使用者自己去实现,又会让容器的内部细节暴露无遗,正因于此,迭代器模式应运而生,在客户访问类与容器之间插入一个第三者——迭代器,很好地解决上面地弊端。原创 2023-01-31 23:56:18 · 101 阅读 · 0 评论 -
设计模式之中介者模式
中介者模式包装了一系列对象相互作用的方式,使得这些对象1不必相互明显作用。从而使它们可以松散耦合。当某些对象之间的作用发生改变时,不会立即影响到其他的一些对象之间的作用。保证这些作用可以彼此独立变化。中介者模式将多对多的相互作用转化为一对多的相互作用。按照中介者的思路,我们在实现中介者模式时势必会有一个类里面会根据不同的对象进行不同的行为操作。原创 2023-01-30 22:54:31 · 110 阅读 · 0 评论 -
设计模式之组合模式
我们平时在Android开发的过程中组合模式的应用并不多,组合模式更适合用于对一些界面ui的架构设计上,因此真正需要开发者去实现的不多。说了这么多理论,现在我们亲自动手实现一个组合模式的案例。上面的案例就是一个典型的组合模式的写法,组合模式的核心个人认为是在于最开始的抽象类(即Dir类)的设计上,Folder和File只是继承了该抽象类进行不同的方法实现而已,在使用时使用多态的方法进行初始化。因此,采用组合模式进行代码设计时必须考虑好抽象方法,不然后面不是很好扩展。原创 2023-01-30 00:39:36 · 255 阅读 · 0 评论 -
设计模式之适配器模式
介绍 适配器是将两个不兼容的类融合在一起。例如,经常碰到要在两个没有关系的类型之间进行交互,第一个解决方案是修改各自类的接口,但是如果没有源代码或者我们不愿意为了一个应用而修改各自的接口,此时我们往往会使用一个Adapter,在这两种接口之间创建一个“混血儿”接口,这个Adapter会将这两个接口进行兼容,在不修改原代码的情况下满足需求。 定义 适配器模式把一个类的接口变成客户端所期待的另一种接...原创 2020-01-08 21:22:18 · 160 阅读 · 0 评论 -
设计模式之装饰者模式
定义 动态地给一个对象添加一些额外地职责 使用场景 需要透明且动态地扩展类的功能时 代码展示 //装饰者模式最主要的是要区分哪些类是装饰者,哪些类是被装饰者 public abstract class Person {//装饰者类 public abstract void dressed(); } public class Boy extends Person{ @Override public void dressed() { System.out.pri.原创 2020-06-30 09:23:34 · 124 阅读 · 0 评论 -
Android开发常用的设计模式
GoF出版的《设计模式:可复用面向对象软件的基础》一书中,共记录了23种设计模式,这些设计模式本质是对面向对象设计的封装、继承、多态的理解。app开发过程中用的比较多的有8种设计模式。 单例模式 单例模式是我们在开发种经常使用到的一种设计模式。单例模式创建的类在当前进程种只有一个实例,并有一个访问它的全局入口。 1.单例模式的优点 内存中只有一个对象实例,节省了内存空间。 避免了频繁创建实例带来的性能消耗。 提供了一种全局访问入口,例如读取配置信息。 2.单例模式的缺点 一般静态类不提供接口实现、抽象原创 2021-08-08 05:32:29 · 1505 阅读 · 1 评论 -
设计模式之工厂方法模式
定义 定义一个用于创建对象的接口,让子类决定实例化哪个类。 使用场景 在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式。 public interface Car { public void make(); public void buy(); } public class BMW implements Car{ @Override public void make() { System.out.println("生产宝马.原创 2020-06-26 03:09:12 · 125 阅读 · 0 评论 -
设计模式之原型模式
定义 用原型实例指定创建对象的种类,通过复制这些原型创建新的对象。 使用场景 (1)类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等,通过原型避免这些消耗。 (2)通过new产生一个对象需要非常繁琐的数据准备或访问权限,这时可以使用原型模式。 (3)一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式复制多个对象供调用者使用,即保护性拷贝(修改拷贝对象的属性不会影响到被拷贝对象(原型对象)的属性)。 需要注意的是,通过实现Cloneable接口的原型模式在调用.原创 2020-06-26 21:20:05 · 125 阅读 · 0 评论 -
设计模式之备忘录模式
备忘录模式用于保存对象当前状态(即属性),并且在之后可以再次恢复到此状态,这有点像我们平时说的"后悔药"。备忘录模式实现的方式需要保证备保存的对象状态不能被对象从外部访问,目的是为了保护好被保存的这些对象状态的完整性以及内部实现不向外暴露。 定义 在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样,以后就可将该对象恢复到原先保存的状态。 使用场景 (1)需要保存一个对象在某一个时刻的状态或部分状态。 (2)如果用一个接口来让其他对象得到这些状态,将会暴露对象的实现细节并破坏对象原创 2020-07-06 00:11:04 · 112 阅读 · 0 评论 -
设计模式之单例模式
单例模式 本文参考了《Android源码设计模式解析与实战》。 定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 使用场景:确保某个类有且只有一个对象地场景,避免产生多个对象消耗过多地资源,或者某种类型地对象只应该有且只有一个。例如,创建一个对象需要消耗的资源过多,如要访问IO和数据库等资源,这时就要考虑使用单例模式。 单例模式有很多实现方式,但是不管哪种实现方式它们的核心...原创 2019-12-10 17:34:22 · 264 阅读 · 0 评论 -
设计模式之代理模式(Proxy Pattern)
Proxy Pattern 本文参考了《Android源码设计模式解析与实战》。 代理案例:每天吃饭赶进度叫公司的同事帮忙买饭;辞职老板不给你发工资,请律师帮忙打官司。 定义:首先自己要做什么事,要先定义好(就是方法要在该类中实现好),代理类只是调用了该类的方法而已。 种类: 静态代理:代理类的代码由程序员自己或通过一些自动化工具生成固定的代码再对其进行编译,也就是说代码运行前代理类的class编...原创 2019-12-10 01:18:01 · 139 阅读 · 0 评论