Android中常用的设计模式

  • 观察者模式
  • 单例模式
  • 适配器模式(如ArrayAdapter)
  • 代理模式(Proxy)
  • 工厂模式(Factory Pattern)
  • 命令模式
  • Build模式
  • 原型模式
  • 策略模式

下面介绍一些Android开发中常用的几种设计模式

观察者模式:

观察者模式定义了一种一对多的依赖关系,当一个对象的状态改变时,所有依赖于它的对象都能得到通知并被自动更新。

适用场景:1,天气预报服务,一旦有天气信息更新,它就会及时向你发送最新的天气信息;2,杂志的订阅;3,广播;4,事件总线EventBus

单例模式:

确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

单例模式核心只需要new一个实例对象的模式,比如数据库连接、在线人数等,一些网站上看到的在线人数统计就是通过单例模式实现的,把一个计数器存放在数据或者内存中,当有人登陆的时候取出来加一再放回去,有人退出登录的时候减一再放回去,但是当两个人同时登录的时候,会同时取出计数器,同时加一,同时放回去,这样的话数据就会错误,所以需要一个全局变量的对象给全部人使用,只需要new出一个实例对象,这就是单例模式的应该,并且单例模式节省资源,因为它控制了实例对象的个数,并有利于GC回收。

 

优点:1,对于那些比较耗内存的类,只实例化一次可以大大提高性能,尤其是在移动开发中;2,保持程序运行时,该中始终只有一个实例存在内存中

适用场景:对于定义的一个类,在整个应用程序执行期间只有唯一的一个实例对象。如Android中的Application对象

例子:

double-check模式的单例模式:

public class SingleTon{
    private static final SingleTon singleton=null;
    
    private SingleTon(){}
    
    public static SingleTon getInstance(){
        if(singleton==null){
            synchronized(SingleTon.class){
                if(singleton==null){
                    singleton=new SingleTon();
                }
            }
          }
        return singleton;
    }
}

还有另外一种单例模式的写法:

public class SingleTon{
    private SingleTon(){}
    
    private static final SingleTon singleton=new SingleTon();
    
    public SingleTon getInstance(){
        return singleton;
    }

}

 

 

策略模式

就是将几个类中公共的方法提取到一个新的类中,从而使扩展更容易,保证代码的可移植性,可维护性强。比如有个需求是写鸭子对象,鸭子有叫,飞,外形这三种方法,如果每个类都写这三个方法会出现代码的冗余,这时候可以把鸭子中的叫,飞,外形这三个方法提取出来,放到鸭子父类中,让每个鸭子都继承这个鸭父类,重写这三个方法,这样封装的代码可移植性强,当用户提出新的需求比如鸭子会游泳,那么对于我们来说就非常简单了,只需要在鸭父类中加一个游泳的方法,让会游泳的鸭子重写游泳方法就可以了

工厂模式

简单的工厂模式主要是统一提供实例对象的引用,通过工厂模式接口获取实例对象的引用。比如一个登录功能,后端有三个类,controller类,interface类,实现接口的实现类。当客户端发出一个请求,当请求传到controller类中时,controller获取接口的引用对象,而实现接口的实现类中封装好了登录的业务逻辑代码。当你需要加一个注册需求的时候只需要在接口类中加一个注册方法实现类中实现方法,controller获取接口的引用对象即可,不需要改动原来的代码,这种做法是可扩展性强。

 

 

 

 

你可能感兴趣的:(Android之高级)