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
- OOP的经典
- 十分经典的理解OOP的文章!
- 深刻剖析经典面试题之四:OOP的三个核心本质之多态
- 深刻剖析经典面试题之四:OOP的三个核心本质之多态
- 深刻剖析经典面试题之四:OOP的三个核心本质之多态
- 面向对象(OOP)经典书单
- oop学习笔记之oop的认识
- OOP以及OOP的基本原则和优缺点
- PHP5 OOP的学习
- OOP的PHP代码
- OOP的PHP长啥样
- OOP的学习(1)
- OOP的未来
- OOP的黄昏
- OOP的黄昏
- OOP的PHP长啥样
- OOP的文件组织方法
- oop的一点认识
- 对象数据转移到另一个对象数据
- List去重
- Java程序如何限速(控制下载和上传速度)
- thinkphp5的路由(自我总结)
- LDAP ,AD开发记录
- OOP的经典
- 一位软件测试工程师的跳槽帖引发的思考
- Java中文字符串截取,不能返回半个汉字
- (转载)matlab中各种范数求解norm
- 浅谈android回调
- Adminlte教程
- git安装配置,常用命令
- Error:Execution failed for task ':app:transformClassesWithDexForRelease '
- 原始数据到CT值的转换