OOP的经典

来源:互联网 发布:做文档的软件 编辑:程序博客网 时间:2024/06/15 05:02

先介绍在UML类图中,常见的有以下几种关系: 

泛化(Generalization)带三角箭头的实线,箭头指向父类, 实现(Realization)带三角箭头的虚线,箭头指向接口,

关联(Association)带普通箭头的实心线,指向被拥有者,聚合(Aggregation)强的关联关系,可以离开主体,独立存在。带空心菱形的实心线,菱形指向整体,

组合(Composition)比聚合关系还要强的关系。带实心菱形的实线,菱形指向整体,依赖(Dependency)带箭头的虚线,指向被使用者;

各种关系的强弱顺序:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖


三类,可以用S、C、A(action)也可以用S、C、B(behavior)

decorater装饰 、observer、 singleton、 template method 、 visitor  (dos cf)

chain of responsibility  、command  、composite

facade外观 、factory method、 flyweight

 abstract factory   adapter   、bridge  builder  、iterator  interpreter解释器 、mediator memento 、prototype proxy 、state strategy

 

责任链:使多个对象都有机会处理请求。android中的点击事件


抽象工厂:为创建一组相关或相互依赖的对象提供一个接口,而不需要制定他们的具体类。android中的service


工厂方法:定义一个创建对象的接口,让子类决定实例化哪个类。Android中的getSystemService()方法


单例:确保单例只有一个实例,提供一个接口让其他类获取。Android中的WindowManager


代理:为其他类提供一种代理,以控制这个对象的访问。Android中的AIDL自动生成。



建造者:将一个复杂对象的构造与它的表示分离,使得同样的构造过程可以创建不同的表示。Android中的AlertDialog.Builder


适配器:把一个类的接口变成客户端期待的另一个接口,从而使原本因接口不匹配而无法一起工作的两个类能够一起工作。Android中的ListView


桥接:将抽象部分与实现部分分离,使他们独立地进行变化。一个类存在二个纬度的变化,且这两个纬度都需要进行扩展。Android中的画View


命令:一系列操作,放入一个队列处理,可以撤退。


组合:将对象组成树形结构,以表示“部分-整体”的层次结构,使用户对单个对象和组合对象具有一致性。Android中的View与GroupView

装饰:动态的给一个对象添加额外的操作,就增加的新功能来说,Decorator比子类继承方式更灵活。Android中的Context


外观:要求一个子系统的外部与其内部的通讯必须通过一个统一的对象进行。Android中Context的这些复杂方法startActivity() sendBroadcast() bindService()


享元:使用享元对象有效的支持大量的细粒度对象。Java中的常量池、线程池。Android中的Message


解释器:给定一个语言,定义它的语法,并定义一个解释器。这个解释器用于解释语言。Android中的Manifest


迭代器:提供一个方法顺序访问一个容器对象中的各个元素,而不需要暴露该对象的内部表示。Android中的Cursor,moveToFirst(),moveToNext()


中介者:将系统从网状结构转为以调停者为中心的星型结构。Android中的Binder机制


备忘录:在不破坏封闭的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。这样以后就可以将对象恢复到原理保存的状态中。Android中的onSaveInstanceState() onRestoreInstanceSate()


观察者:定义对象之间的对象关系,当1发生变化时,n全部得到通知,并更新。Android中ListView的notifyDataSetchanged()


状态:行为是由状态决定的,STATE的行为是平行的,不可替换的。Strategy的行为彼此独立可以相互替换。 Android中的WIFI模块关闭


策略:有一系列算法,将每个算法封装起来(每个算法可以封装到不同的类中),各个算法可以替换。Android中属性动画的 时间插值器。线性、减速、加速插值器


模版方法:定义一个操作中框架,而一些步骤延迟到子类中,使得子类可以不改变一个算法结构即可以从新定义该算法的特定步骤。Android中Activity开发者定制。onCreate() onStart(),这样子类不需要改变整体。


参观者:封装一些作用与某种数据结构中各个元素的操作,他可以在不改变这个数据结构的前提前定义作用与这些元素的新操作。Android编译注释中,APT(Animation Processing Tools) ButteKnife Dragger Retrofit


0 1
原创粉丝点击