金三银四,又迎来了新一轮的跳槽季节。我也是跳槽队伍中的一员,想到刚来北京北难住最后的就是问到设计模式。说真的我是一窍不通。最后只能简单背背概念。没想到工作一年来,想到跳槽,自己匮乏的还是设计模式,虽然工作中无意识的用到过很多模式,但是只存在会用的阶段。趁现在还有时间,就总结下android 设计模式 和概念。希望可以学之皮毛。
应用最广泛的模式——单例模式
定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
细分的化,单例模式有七种写法。但是感觉有点强硬。所以不介绍了。
单例模式有两种模式:
懒汉式:
class Singleton {
private static Singleton instance=null;
private Singleton(){}
static Singleton getInstance() {
if(instance==null)
instance=new Singleton();
return instance;
}
饿汉式:
class Singleton {
private static Singleton instance=new Singleton();
private Singleton(){}
static Singleton getInstance() {
return instance;
}
}
自由扩展你的项目——Builder模式
定义: Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构造细节的情况下,可以更精细地控制对象的构造流程,该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。
因为一个复杂的对象有很多大量组成部分,如汽车,有车轮,方向盘,发动机,还有各种小零件等,如何将这些部件装配成一辆汽车,这个装配过程很漫长。也很复杂,对于这种情况,为了在构建过程中对外部隐藏实现细节,就可以使用builder模式将部件和组装过程分离,使得构建过程和部件都可以自由扩展,两者之间的耦合也降低。
不要问我为什么看不懂,因为我也不懂,工作中我肯定没有用过这种模式。自己慢慢理解吧。
使程序运行更高效——原型模式
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
应用最广泛的模式——工厂方法模式
定义:定义一个用于创建对象的接口,让子类决定实例化那个类。
在任何需要生成复杂对象的地方,都可以使用工厂方法模式,复杂对象适合使用工厂模式, 用new就可以完成创建的对象无需使用工厂模式;
运动员.java
public interface 运动员 {
public void 跑();
public void 跳();
}
足球运动员.java
public class 足球运动员 implements 运动员 {
public void 跑(){
//跑啊跑
}
public void 跳(){
//跳啊跳
}
}
篮球运动员.java
public class 篮球运动员 implements 运动员 {
public void 跑(){
//do nothing
}
public void 跳(){
//do nothing
}
}
体育协会.java
public class 体育协会 {
public static 运动员 注册足球运动员(){
return new 足球运动员();
}
public static 运动员 注册篮球运动员(){
return new 篮球运动员();
}
}
俱乐部.java
public class 俱乐部 {
private 运动员 守门员;
private 运动员 后卫;
private 运动员 前锋;
public void test() {
this.前锋 = 体育协会.注册足球运动员();
this.后卫 = 体育协会.注册足球运动员();
this.守门员 = 体育协会.注册足球运动员();
守门员.跑();
后卫.跳();
}
}
得心应手的“粘合剂”——适配器模式
定义:适配器模式在我们的开发中使用频率很高,从代码中随处可见额Adapter就可以判断出来,从最早的listview,
Gredview到现在RecycleView都需要使用Adpater,并且在开发中我们遇到的优化问题,出错率较大的地方也基本都是
Adapter。
适配器是让两个不兼容的类融合在一起,它有点像粘合剂,将不同的东西通过一种转换使得他们能够协作起来。
—————————————————————————————————————以上都是废话——————————————————————————————————
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作