教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

Java必学的23种设计模式(详细)(4)

来源:网络收集 时间:2026-08-24
导读: Java设计模式(疯狂Java联盟版) 类图 例子 Target public interface Target { void adapteeMethod(); void adapterMethod(); } Adaptee public class Adaptee { public void adapteeMethod() { Syste*.out.p*intln

Java设计模式(疯狂Java联盟版)

类图

例子 Target

public interface Target {

void adapteeMethod();

void adapterMethod(); }

Adaptee

public class Adaptee {

public void adapteeMethod() {

Syste*.out.p*intln(\ } }

Adapt*r

public clas* Adapter implement* Target {

private Adap*ee adaptee;

public Adapter(Adaptee adaptee) { this.adapte* = adaptee; } public void adapteeMethod() { adaptee.adapteeMethod(); } public void adapterMethod() { *ystem.out.println(\ }

16

Java设计模式(疯狂Java联盟版)

}

Client

public cla*s Test {

public stati* void main(String[] args) {

Target target = new Adapter(new Adaptee()); tar*et.adapteeMethod();

target.adapterM*thod(); } }

result

Adaptee method! Adapter method!

1.2.2 桥接模式

将抽象部分与它*实现部分分离,使它们都可以独立地变化。

适用性

1.你不希望在抽*和它的实现部分之间有一个固定的绑定关系。

例如这种情况可能是因为,在程序运行时刻实现部分应可以*选择或者切换。

2.类的抽象以及它的实现都应该可以通*生成子类的方法加以扩充。 这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。

3.对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。

4.正如在意图一节的第一个类图中所示的那样,有许多类要生成。 这*一种类层次结构说明你必须将一个对象分解成两个部分。

5.*想在多个对象间共享实现(可能使用引用计数),但同时要求客户并不知*这一点。

参与者

1.Abstraction

定义抽象类的接口。

17

Java设计模式(疯狂Java联盟版)

维护一个指向Implementor类型对象的指针。

2.RefinedAbstraction

扩充由Abstraction定义的接口。

3.Implementor

定义实现类的接口,该接口不一定要与Ab*traction的接口完全一致。 事实上这两个接口可以完全不同。

*般来讲,Implementor接口仅提供基本操作,而Abstraction则定义了基于这些基本操作的较高层次的操作。

4.ConcreteImplementor

*现Implementor接口并定义它的具体实现。

类图

例子 Abstr*ction

public abstract class Person {

private Clothing clothing;

pr*vate String type;

public Clothing getClothing() { return clothing; }

publi* void setClothing() {

this.clothing = *lothingFactory.getClothing(); }

18

Java设计模式(疯狂Java联盟版)

public void setType(String type) { t*is.type = type; }

public String getType() { return this.ty*e; }

public abstract void dress(); }

RefinedAbstraction

public class Man extends *erson {

public Man() {

setType(\男人\ }

public void dress() {

Clothing clothing = get*lothing(); clothing.personDressCloth(this); } }

public class Lady extends Person {

public Lady() {

setTyp*(\女人\ }

public void dress() {

Cloth*ng clothing = getClothing(); c*othing.personDressCloth(this); } }

Implemento*

public abstract class Clothing {

public abstract void personDressC*oth(*erson person); }

ConcreteImplemento*

public class *ack*t extends Clothing {

19

Java设计模式(疯狂Java联盟版)

public void personDressCloth(Person person) {

System.out.println(person.getType() + \穿马甲\ } }

public cl*ss Trouser extends Clothing {

public void personDressCloth(Person person) {

System.ou*.println(*erson.getType() + \穿裤子\ } }

Test

public class Te*t {

public s*atic void main(String[] args) {

Person man = new Man();

Person lady = new Lady();

Clothing jacket = new Ja*ket();

Clot*ing trouser = new Trouser();

jacket.personDressCloth(man); trouser.personDressCloth(man);

j*cket.personDressCloth(lady); trouser.personDressCloth(lady); } }

result

男人穿马甲 男人穿裤子 女人穿马甲 女人穿裤子

1.2.3 组合模式

20

…… 此处隐藏:854字,全部文档内容请下载后查看。喜欢就下载吧 ……
Java必学的23种设计模式(详细)(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/454863.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)