Vane's Blog

设计模式之策略模式

1 概述 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化, 这种类型的设计模式属于行为模式。比如之前笔者做的一款app,里面集成了百度地图和谷歌地图的SDK,那么就可以使用策略模式来实现地图类,根据是在国内还是国外来动态选择百度地图还是谷歌地图。 2 策略模式的使用场景 针对同一类型问题的多种处理方式,仅仅...

设计模式之工厂模式

1 概述 工厂模式是创建型设计模式之一。工厂模式是一种结构简单的模式, 此模式提供了创建对象的最佳方法之一。 在工厂模式中,我们没有创建逻辑暴露给客户端创建对象,并使用一个通用的接口引用新创建的对象。 工厂模式又有以下几种细分的模式: 简单工厂模式 工厂方法模式 抽象工厂模式 2 简单工厂模式 简单工厂模式就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。...

设计模式之原型模式

1 概述 原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。原型模式是为了解决一些不必要的对象创建过程。 原型表明了该模式应该有一个样板实例,用户从这个样板对象中复制出一个内部属性一致性的对象,这个过程就是所谓的“克隆”。原型模式多用于创建复杂的或者构造耗时的实例。 2 使用场景 类初始化需要消耗非常多的资源,如数据、硬件资源等 通过个过new产...

设计模式之Builder模式

1 概述 Builder模式也成为建造者模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离。 很多开源库创建一个对象时,都是利用Builder模式来构建的,比较 okHttp开源库,如 构造Request对象 如下: Request request = new Request.Bui...

Deadlocks and ANRs(非原创)

In this article we’re going to have a look at how to analyse a real-world Application Not Responding (ANR) trace, determine the cause (which turns out to be a deadlock in one of the libraries we’re...

Android ANR问题总结(非原创)

1 概述 ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。 ANR:Application Not Responding,即应用无响应 为用户在主线程长时间被阻塞 Android 系统自身提供的一种检测机制 2...

设计模式之单例模式

1 概述 单例模式是应用最广泛的模式之一,该模式确保某各类只有一个实例对象,而且自行实例化并向整个系统提供这个实例。 2 使用场景 确保各类有且只有一个对象的场景,避免产生多个对象小豪过多的资源,或者某种类型的对象只应该有且只有一个。例如,创建一个对象需要消耗的资源过多,如要访问的IO和数据库等资源,这时就要考虑使用单例模式。 3 UML类图 角色介绍: Client:...

面向对象六大原则

1 概述 在设计面向对象的程序时,如果能遵循一些指导原则取设计,那么所设计的软件架构的灵活性和代码的可读性将会大大的提高,常用的面向对象原则有:单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则和迪米特原则等。 2 单一职责原则 就一个类而言,应该仅有一个引起它变化的原因。简单来说,一个类中应该是一组相关性很高的函数、数据的封装。但这个原则并不是总是那么清晰,很多时候一个...

Android O系统启动流程--ActivityManagerService篇

frameworks/base/services/java/com/android/server/SystemServer.java SystemServiceManager.java frameworks/base/services/java/com/android/server/am/ActivityManag...

Android O系统启动流程--SystemServer篇二

frameworks/base/services/java/com/android/server/SystemServer.java 1 概述 上篇Zygote经过RuntimeInit最后跳转到SystemServer的main方法,实现了 system_server进程 的初步分析,接下来我们从SystemServer的main()开始分析system_ser...