- 浏览: 19404 次
最新评论
文章列表
中介者模式(Mediator )
- 博客分类:
- 设计
GOF意图:用一个中介对象来封装一系列的对象交互
角色:
Mediator(中介者):中介者定义一个接口用于与各同事对象进行通信
ConcreteMediator(具体中介者):要持有每个同事的引用,或持有同事列表。
Colleague class(同事):持有中介者引用,要与别的同事通讯,可以通过中介者的接口查到同事通讯。
实现要点:中介者持有同事列表,和提供通讯接口(要能查到指定的同事),同事持有中间者引用。
观察者模式(Observer)
- 博客分类:
- 设计
GOF意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。(一个类(观察者)的行为依赖另一个类(被观察者)的行为)
角色:
1 抽象主题(Subject):抽象被观察者,维持有一个观察者列表,可以添加和删除,被观察这变化的时候调用或通知观察者。
2 具体主题(ConcreteSubject): 具体被观察者。
3 抽象观察者(Observer):抽象观察者,接受被观察者的调用或通知从而改变自己。
4 具体观察者(ConcreteObserver):具体观察者,
实现要点:
被观察者Subject维持一个观察 ...
* 策略模式(Strategy)
- 博客分类:
- 设计
GOF意图:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。(同一个调用类在不同策略下有不同策略实现的解决方案)
角色:
环境类(Context):用一个Strategy对象来配置。维护一个对Strategy对象的引用
抽象策略类(Strategy):有一个方法Algorithminterface()是context当前策略下的不同实现。
具体策略类(ConcreteStrategy):具体策略类
实现要点:
context是主类,strategy是context不同策略。设置context.setStrategy()策略,用户调用co ...
状态模式(State)
- 博客分类:
- 设计
GOF意图:允许一个对象在其内部状态改变时改变它的行为。(同一个调用类在不同状态下有不同反应)
角色:
环境类(Context): 定义客户感兴趣的接口。维护一个ConcreteState类的实例,这个ConcreteState是context的状态。
抽象状态类(State): 抽象状态,有一个方法handle()是context当前状态下的反应。
具体状态类(ConcreteState): 具体状态类。
实现要点:
context是主类,state是context不同状态。设置contex.setState()t状态,用户调用context.requese() ...
访问者模式(Visitor )
- 博客分类:
- 设计
GOF意图:表示一个作用于某对象结构中的各元素的操作。(元素设定访问器,访问器再访问对象)
角色:
1.Visitor 抽象访问者角色。有方法visitElent需要元素参数
2.ConcreteVisitor.具体访问者角色,访问元素对象的。
3.Element 被 ...
享元模式 (Flyweight)
- 博客分类:
- 设计
GOF意图:运用共享技术有效地支持大量细粒度的对象
Flyweight模式是构造型模式之一,它通过与其他类似对象共享数据来减小内存占用,所以叫享元。
此模式解决的是由于大量的细粒度对象所造成的内存开销的问题,它在实际的开发中并不常用,但是作为底层的提升性能的一种手段却很有效
角色:
享元工厂(FlyweightFactoiy)角色:维持一个享元列表,并且负责创建和查询
抽象享元角色(Flyweight):提供唯一标识状态,可以让工厂检索。
具体享元(ConcreteFlyweight)角色:
不可以共享享元(UnsharableFlyweight)角色:复合享元角色 ...
代理模式 (Proxy)
- 博客分类:
- 设计
GOF意图:为其他对象提供一种代理以控制对这个对象的访问
角色:
1) 抽象主题角色(Subject):统一接口
2)代理角色(Proxy):
保存一个引用使得代理可以访问实体。若 RealSubject和Subject的接口相同,Proxy会引用Subject。
提供一个与Su ...
适配器模式(Adapter)
- 博客分类:
- 设计
GOF意图:将一个类的接口转换成客户希望的另外一个接口。
Adapt 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
角色:
1 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
2 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。
3 需要适配的类(Adaptee):需要适配的类或被适配的类。
实现:略
适用场景
外观模式(Facade)
- 博客分类:
- 设计
GOF意图:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
角色:
(1) Facade(外观角色):在客户端可以调用它的方法,在外观角色中可以知道相关的(一 ...
装饰模式(Decorator)
- 博客分类:
- 设计
装饰模式又名包装(Wrapper)模式
GOF意图:动态地给一个对象添加一些额外的职责。(功能分离,自由组合)Decorator模式相比生成子类更为灵活
角色:
抽象构件(Component)角色:一个统一抽象接口,里面没有被包装者的引用。
具 ...
组合模式 (Composite)
- 博客分类:
- 设计
GOF意图:将对象组合成树形结构以表示“部分整体”的层次结构。(组成一个树状结构)
角色:
1.Component 是统一接口,在适当的情况下,实现共有的默认行为。声明一个接口用于访问多个leaf。
2.Leaf 被组合的对象。
3.Composite 是组合者,有一个list列表,用来存储leaf部件,在Component接口中实现子部件有关操作,如增加(add)和删除(remove)等。
实现:composite是组合者或是被组合者(类似树的节点),leaf是被组合者(类似树的节点)。两者实现了同一个接口。
适用性:
以下情况下适用Composite ...
UML类图与类的关系
- 博客分类:
- 设计
类的表示方法
接口的表示方法
或者
类之间关系(耦合性从强到弱)
继承:is a 关系
实现:
组合:contains a关系表示两个对象之间是整体和部分的强关系,部分的生命周期不能超越整体,或者说不能脱离整体而存在。组合关系的“部分”,是不能在整体之间进行共享的
person组合了eye
聚合:has a关系表示两个对象之间是整体和部分的弱关系,部分的生命周期可以超越整体。如电脑和鼠标。
computer聚合了mouse
桥接模式(Bridge)
- 博客分类:
- 设计
GOF意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化
角色:
抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。
修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。
实现化(Implementor)角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以非常不一样。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。
具体实现化(Concrete Imple ...
面向对象设计模式的六大基本原则(设计类的原则)
- 博客分类:
- 设计
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//方法设计(算法设计)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//类设计原则(面向对象设计原则)
http://blog.csd ...
简易易懂的android回调的实现
- 博客分类:
- 其他
回调机制在 Android 监听用户界面操作中的体现
本文讨论以下两个内容:1. 回调函数2. 回调机制在 Android框架 监听用户界面操作中的作用
一 、回调函数: 回调函数就是一个通过函数指针调用的函数。如果你把函数 ...