首页 > 程序开发 > 软件开发 > Java >

《java与模式》笔记

2011-07-29

1 总体认识{{{1共享的词汇 让你和其他开发人员之间有共享的词汇,一旦懂这些词汇,和其他开发人员之间沟通这些观念就很容易,也会激起那些不懂的程序员想开始学习设计模式。提升思考架构的层次到模式层面,而不...

1 总体认识{{{1

共享的词汇 让你和其他开发人员之间有共享的词汇,一旦懂这些词汇,和其他开发人员之间沟通这些观念就很容易,也会激起那些不懂的程序员想开始学习设计模式。

提升思考架构的层次到模式层面,而不是停留在琐碎的对象上。

[img][attach]11[/attach][/img]

3种:

创建模式:类和对象的创建

结构模式:类或者对象组成更大的结构

行为模式:在不同的对象之间划分责任和算法

UML类图

性质即 内部变量和set(),get()组成

Junit

2 学习方法{{{1

设计模式 通过23趣解理解概念 java类why how 设计,理解简单实例

3 各个模式{{{1

3.1 创建模式{{{1

3.1.1 简单工厂{{{2

3.1.2 工厂方法{{{2

3.1.3 抽象工厂{{{2

3.1.4 单例类{{{2

单例类:一个类只有一个实例

java中应用:

private m_instance

private 构造函数

getinstance(){ return m_instance}

会看类图、序列图相当重要 简单明了

类图只能反映模式的静态结构,对于创建模式而言,活动图是相当重要的。

--------------------------------------------------------------------------------

3.1.5建造模式{{{2

3.1.6原始模型{{{2

原始模型

Object

cloneable Serializable

浅复制 深复制

--------------------------------------------------------------------------------

3.2 结构模式{{{1

3.2.1 适配器模型{{{2

1 extends classtemp implements interfacetemp

2 implements interfacetemp { Classtemp classtemp; 调用classtemp方法}

=====================================

3.2.2 合成模式{{{2

3.2.3 装饰模式{{{2

private 齐天大圣c;

public 七十二般变化(齐天大圣c)

{

super();

this.c=c;

}

public void move(){

c.move();

}

ex:reader x=new bufferreader(in);

为所装饰对象提供增强功能

3.2.4代理模式{{{2

InvocationHander

invoke()

Proxy

对对象的使用施加控制

3.2.5享元模式{{{2

字体:字母为享元,位置和风格为外蕴状态

3.2.6门面模式{{{2

保安系统 包括 开灯、开监视器等

3.2.7桥梁模式{{{2

抽象化与具体化分开

飞机 制造者

类型 具体厂商

3.3 行为模式{{{1

3.3.1不变模式{{{2

final class

优缺点:

1.易维护

2.安全性

3.3.2策略模式{{{2

封装不同算法

3.3.3模板模式{{{2

大方法划分成若干个小方法

ps:面向对象四大特征:

抽象化

继承 类子类可获得父类相关属性

封装 各种权限去访问类属性、方法 或接口

多态性 多个类去相同属性,其他各异化 注重点是多个子类

3.3.4 观察者模式{{{2

"我"和“妹妹”向主题“妈妈”登记了感兴趣的“饭熟了”,“妈妈”在事件发生时,通知观察者“我”和“妹妹”,使其采取相应的行动“吃饭”。

java中Observable, Observer

3.3.5 迭代子模式{{{2

Colliection Iterator

可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。

3.3.6责任链模式{{{2

击鼓传花

DHTML 中DOM event 传播

captureEvent()releaseEvent()

3.3.7 命令模式{{{2

Callback

Command play = new PlayCommand(myAudio);

Command stop = new StopCommand(myAudio);

Command rewind = new RewindCommand(myAudio);

keypad = new Keypad(play, stop, rewind);

keypad.play();

keypad.stop();

keypad.rewind();

keypad与myAudio没有直接打交道

一个命令一个类

3.3.8 备忘录模式{{{2

难理解

3.3.9 状态模式{{{2

有状态对象 如一组编钟

state setstate()

3.3.10 访问者模式{{{2

3.3.11 解释器模式{{{3

文法 解释

3.3.12 调停者模式{{{2

相互之间太多关系=====》米字形关系 中间有一调停者

相关文章
最新文章
热点推荐