Android源码中也有很多地方用到了这种设计思想,最经典的Context就使用了这种模式,Context对于我们来说都不陌生,它代表了当前的上下文对象,它本身是一个抽象类: Context相当于一个【被装饰者抽象类】 它有一个子类ContextWrapper,可以看到它持有Context对象,并且在构造方法中赋值,是不是类似于上面例子中的抽象装饰者类: ...
2:Activity.getApplicationContext,获取当前Activity所在的(应用)进程的Context对象,通常我们使用Context对象时,要优先考虑这个全局的进程Context。 3:ContextWrapper.getBaseContext():用来获取一个ContextWrapper进行装饰之前的Context,可以使用这个方法,这个方法在实际开发中使用并不多,也不建议使用。 4:Activity.this 返回...
ContextThemeWrapper作为ContextWrapper一个扩展,它是重写了ContextImpl中的一些关于Theme的实现,也就是说ContextImpl本身也是有Theme的实现,它提供的Theme是整个APP的Theme,而这里扩展了之后,支持了Theme的替换之后,在不同的页面支持了不同的Theme设置。 Context作为应用程序环境和运行时状态的信息,设计初衷上它应该是固定的...
*/publicvoidcomment(Contextcontext);} 2.具体的实现类 登陆过的 publicclassLoginStateimplementsUserState{@Overridepublicvoidforward(Contextcontext){Toast.makeText(context,"跳转",Toast.LENGTH_LONG).show();}@Overridepublicvoidcomment(Contextcontext){Toast.makeText(context,"评论",Toast.LENGTH_LONG).show()...
外观模式又称为门面模式,它是一种对象结构型模式。如Glide.with().load().into(). Retrofit.create();等众多著名的开源框架的使用都是用了外观模式。Android中如Context中封装的 startActivity()方法,也是采用外观模式,将内部复杂的通过AMS跨进城启动activity的细节隐藏起来...
样,随便创建一个类,写个main()方法就能运行,Android应用模型是基于组件的应用设计模式,组件的运行要有一个完整的Android工程环境,在这个环境下,Activity、Service等系统组件才能够正常工作,而这些组件并不能采用普通的Java对象创建方式,new一下就能创建实例了,而是要有它们各自的上下文环境,也就是我们这里讨论的Context...
写个main()方法就能运行,Android应用模型是基于组件的应用设计模式,组件的运行要有一个完整的Android工程环境,在这个环境下,Activity、Service等系统组件才能够正常工作,而这些组件并不能采用普通的Java对象创建方式,new一下就能创建实例了,而是要有它们各自的上下文环境,也就是我们这里讨论的Context。
装饰器模式 代理模式 外观模式 组合模式 享元模式 模版模式 观察者模式 迭代子模式 责任链模式 命令模式 备忘录模式 1、单例模式 单例模式是非常常用且最容易理解的设计模式之一,它能保证在JVM中只有一个实例对象存在,因此会给系统带来以下好处: 1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销...
样,随便创建一个类,写个main()方法就能运行,Android应用模型是基于组件的应用设计模式,组件的运行要有一个完整的Android工程环境,在这个环境下,Activity、Service等系统组件才能够正常工作,而这些组件并不能采用普通的Java对象创建方式,new一下就能创建实例了,而是要有它们各自的上下文环境,也就是我们这里讨论的Context...