我是靠谱客的博主 直率麦片,最近开发中收集的这篇文章主要介绍一些基本的设计模式概念,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

 

《Android程式设计之美》-高焕唐

在描述OOP的时候,提到is a kind of 和is a part of,尤其,抽象和具象这两个词语的使用,让人很容易理解子类归纳出父类,父类派生出子类分别都做了什么事情?其实就是抽象和具象。

 

 

ViewGroup和View体系体现的聚合关系:

 

 

后续自己在描述android的类体系构造的时候可以用到基本组件(Primitive Componenent)和复合组件(Composite Component)这两个概念,android的设计师也是基于这两个概念来设计整个类体系的。这也是一种设计模式。比如ViewGroup就是一种复合组件,而没有继续派生的Button(可能继续派生了哈)就是中基本组件,不是其他类别的一种抽象。

 


ViewGroup和View具有聚合(Aggregation)关系,TextView和View之间是继承关系,因此TextView和ViewGroup也具有聚合关系。这里要注意,这种聚合关系体现在View下面如TextView的整个类体系的类可以作为apart of ViewGroup(当然ViewGroup的派生类和TextView这个类体系也具有聚合关系),换种说法就是多个小的View对象可以聚合成一个集合型的View对象(复合组件)


ViewGroup自己也是View的子类,因此ViewGroup和自己也具有聚合关系(实际体现就是多个布局聚合在一起形成一个复合型的布局)
基类(Base-class)派生(Derive)出子类


在View的这样一种聚合模式下,用户是可以自己定制新的组件假如到这个体系中去的,这样就保证了良好的拓展性(具体体现在,我们可以自己定制各种控件和布局,甚至拜托二维控件,构造新的复合组件)

一种很好的理解:
由基本数据类型所宣告的变量,直称为变量。

 

 

由抽象数据类型(即类别)所宣告的变量,就称为类别。

 

 


对象参考(Object Reference)


java中一般是通过Reference Argument(就是引用)来传递数据,这就是所谓的籍参考调用(call by Reference).
不采用拷贝,而采用引用就可以避免参数过大的时候引起的效率问题。


父子类构造函数如何一起构造一个子类对象(对讲解View树的调用关系有帮助)


聚合和组合的区别在于二者是否共生共灭


View和Context体系体现出的组合关系:
Context常用来建立包含关系,android应用框架中就是使用了对象包含关系来体现各种组合的。
看了这个对Context和this的作用有了新的理解。
组合和继承的区别:
组合方法中,新类别不包含原类别的函数。
程序的覆写在控制反转(Inversion of Control)上起到重要的作用。

复写钩子函数的时候有三种选择:
1.不覆写
2.Reuse(调用父类函数)
3.完全覆写(不调用父类函数)
一般的组合模式是抽象类别+预设函数(钩子函数)

当java编译某个类别的时候会为该类别建立一个虚函数表,将各函数的地址逐一存放在表格中。
Father child = new Child();
的时候,child.this指针指向的是Child类型对象。

纯虚类扮演的角色是接口,(接口的另一种方式是Interface机制),原来之前用纯虚函数来作接口是
因为Interface机制还没出现。
类别层级(Class-level)的数据又称为共享数据,类别层级的函数(Class-level Function)只能存取共享资料的值,不能读写对象内部的数据值,而起调用当然就要用类别二


不是实际对象来调用了。


阶层结构(Hierarchical)
当应用程序执行时,android框架会不断发出讯息给应用类别,推动画面布局的变化,因此
android框架是程序运转的动力来源。

在state模式中Context类别必须要能够直接使用State抽象类别的接口才行,如果不能用,就需要用到Proxy模式。换句话说Proxy模式一定程度上是用来解决进程间通信的。
关键在于,Proxy模式将不变的部分抽取出来,并"由Proxy类将复杂的IPC沟通机制封装起来",从而让人感觉访问Proxy的时候感觉和直接访问目标类一样。
和Adapter模式相比,Adapter是封装一层接口,从而起到隔离真正接口的作用,而Proxy的作用是提供一个能够直接访问的分身,从而解决不能跨进程直接访问的问题。

 

 

Stub类的设计其实是一种设计上的优化,本来Adapter和实际类是分开的,但将二者合并之后,就形成了一个Stub。这就形成了常见的Proxy-Stub模式(自己看Android系统的源码,怎么样也想不到这种模式其实是一种优化啊。。不看书果然不行,唉)但是这种模式还是需要访问端的开发者具备RPC知识,因此还需要优化。。让懂RPC的人统一编写Proxy和Stub,然后由不懂的人直接使用。

 

 

 

最后还可以由aidl工具生成两套接口供双方使用。

最后

以上就是直率麦片为你收集整理的一些基本的设计模式概念的全部内容,希望文章能够帮你解决一些基本的设计模式概念所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部