`
isiqi
  • 浏览: 16734640 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

结构型模式

 
阅读更多

Adapter

classAdapteea...{
publicvoidkk()...{}
}


interfaceTargeta...{
Stringvv(
inti,intk);
}


classAdapteraimplementsTargeta...{
Adapteeaade;

publicAdaptera(Adapteeaade)...{
this.ade=ade;
}


publicStringvv(inti,intk)...{
//具体的业务方法实现在Adaptee中,这个方法
//只起到了接口转换的作用
//调用此方法是通过引用
ade.kk();
returnnull;
}

}


//使用继承形式的
classAdapteeb...{
publicvoidkk()...{}
}


interfaceTargetb...{
Stringvv(
inti,intk);
}


classAdapterbextendsAdapteebimplementsTargetb...{
publicStringvv(inti,intk)...{
//调用此方法是通过继承
kk();
returnnull;
}

}

Proxy

interfaceSubject...{
voidrequest();
}


classrealSubjectimplementsSubject...{
publicvoidrequest()...{
//dotherealbusiness
}

}


classProxyimplementsSubject...{
Subjectsubject;

publicProxy(Subjectsubject)...{
this.subject=subject;
}


publicvoidrequest()...{
System.out.println(
"dosomething");

subject.request();

System.out.println(
"dosomething");
}

}

Bridge

interfaceImp...{
voidoperation();
}


classCimp1implementsImp...{
publicvoidoperation()...{
System.out.println(
"1");
}

}


classCimp2implementsImp...{
publicvoidoperation()...{
System.out.println(
"2");
}

}


classInvoker...{
Impimp
=newCimp1();

publicvoidinvoke()...{
imp.operation();
}

}

Composite

interfaceComponent...{
voidoperation();

voidadd(Componentcomponent);

voidremove(Componentcomponent);
}


classLeafimplementsComponent...{
publicvoidoperation()...{
System.out.println(
"anoperation");
}


publicvoidadd(Componentcomponent)...{
thrownewUnsupportedOperationException();
}


publicvoidremove(Componentcomponent)...{
thrownewUnsupportedOperationException();
}

}


classCompositeimplementsComponent...{
Listcomponents
=newArrayList();

publicvoidoperation()...{
Componentcomponent
=null;

Iteratorit
=components.iterator();
while(it.hasNext())...{
//不知道此component对象是leaf还是composite,
//如果是leaf则直接实现操作,如果是composite则继续递归调用
component=(Component)it.next();
component.operation();
}

}


publicvoidadd(Componentcomponent)...{
components.add(component);
}


publicvoidremove(Componentcomponent)...{
components.remove(component);
}

}

Decorator
//对一个类的功能进行扩展时,我可以使用继承,但是不够灵活,所以选用了
//另外的一种形式,引用与继承都可活得对对象的一定的使用能力,而使用引用将更灵活
//我们要保证是对原功能的追加而不是修改,否则只能重写方法,或使用新的方法
//注意concrete的可以直接new出来,
//而decorator的则需要用一个另外的decorator对象才能生成对象
//使用对象封装,和公用接口
//Decorator链上可以有多个元素

interfaceComponenta...{
voidoperation();
}


classConcreteComponentimplementsComponenta...{
publicvoidoperation()...{
System.out.println(
"dosomething");
}

}


classDecoratorimplementsComponenta...{
privateComponentacomponent;

publicDecorator(Componentacomponent)...{
this.component=component;
}


publicvoidoperation()...{
//dosomethingbefore

component.operation();

//dosomethingafter
}

}

Facade

classObj1...{
publicvoidope1()...{}
publicvoidope2()...{}
}


classObj2...{
publicvoidope1()...{}
publicvoidope2()...{}
}


classFacade...{
//我得到了一个简洁清晰的接口
publicvoidfdMethod()...{
Obj1obj1
=newObj1();
Obj2obj2
=newObj2();

obj1.ope1();
obj2.ope2();
}

}

Flyweight
//先定义一个抽象的Flyweight类
packageFlyweight;
importjava.util.Hashtable;

publicabstractclassFlyweight...{
 
publicabstractvoidoperation();
}


//实现一个具体类
publicclassConcreteFlyweightextendsFlyweight st
分享到:
评论

相关推荐

    C#面向对象设计模式纵横谈(9):Composite 组合模式(结构型模式)

    标题中的“C#面向对象设计模式纵横谈(9):Composite组合模式(结构型模式)”明确了文章的主题聚焦于C#语言环境下的设计模式探讨,具体到第9篇讨论的是“Composite组合模式”。这一模式属于结构型模式的一种,旨在解决...

    23种设计模式,创建型模式共5种,结构型模式7种,行为型模式11种

    设计模式分为三大类:创建型模式、结构型模式和行为型模式。 **创建型模式**关注的是对象的创建。共有五种创建型模式: 1. **工厂方法模式**:它定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法...

    结构型模式的几个模式

    根据它们的功能,这些模式通常被分为三类:创建型模式、结构型模式和行为型模式。本篇文章将重点讨论结构型模式中的几种关键类型:外观模式、代理模式、适配器模式以及桥接模式。 #### 二、结构型模式简介 结构型...

    设计模式之结构型模式

    在众多设计模式中,结构型模式关注如何组织类和对象,以形成更复杂的结构,同时保持良好的设计和代码可维护性。以下是关于“设计模式之结构型模式”的详细解析。 1. **适配器模式**: 适配器模式是一种结构型设计...

    Java设计模式之结构型模式源码以及文档

    今天我们要探讨的是“Java设计模式之结构型模式”。结构型模式主要关注如何组织类和对象,以达到良好的架构,提升代码的可读性和可维护性。在这个主题中,我们将深入理解并讨论这些模式的原理、应用场景及其实现。 ...

    设计模式之结构型模式uml类图EA文件.rar

    在给定的压缩包文件中,我们关注的是结构型设计模式,这些模式主要用于处理类和对象的组合与结构,以实现更灵活、可扩展的设计。下面我们将详细探讨其中涉及到的几个模式:桥接模式、适配器模式、装饰者模式和组合...

    软件设计模式结构型模式实验代码

    包含5个实验,桥接模式(电子商务网站常有这样的功能:发送消息通知,比如订货发货通知等),适配器模式(电子商务网站有购物车的功能,可以把挑选的东西加入购物车,可以把挑选的东西加入购物车、删除或者更改购买...

    结构型模式部分知识

    在软件设计领域,结构型模式是面向对象设计中的一种重要思想,它主要关注如何组织类和对象,以形成更复杂的结构,同时保持代码的清晰性和可维护性。本资料是关于高等软件工程中的7大结构型模式的PPT总结,包含了大量...

    行为型模式+结构型模式+创建型模式:三大设计模式实例剖析与深入解读

    在给定的标题和描述中,我们关注的是三种主要的设计模式类别:行为型模式、结构型模式和创建型模式。下面将分别对这三大类模式进行详细阐述,并通过实例剖析它们的核心概念和应用场景。 **行为型模式**主要关注对象...

    设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式

    创建型模式 (100%) 设计模式面面观(8):创建型模式总结 (100%) 设计模式面面观(9):适配器模式(Adapter Pattern)-结构型模式 (100%) 设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式 ...

    设计模式原理与应用之结构型模式.pptx

    结构型模式是设计模式的一种分类,它关注如何组合类和对象,构建更大的结构。本篇主要讨论了七种结构型模式:Adapter、Bridge、Composite、Decorator、Façade、Flyweight和Proxy。 1. **Adapter模式**: - 适配器...

    23种设计模式-结构型模式.docx

    《23种设计模式——结构型模式解析》 设计模式是软件工程中的一种最佳实践,它们是解决常见问题的经验总结,被广泛应用于软件设计中,以提高代码的可读性、可维护性和复用性。在众多的设计模式中,结构型模式尤其...

    设计模式2-结构型模式&设计模式基本原则

    在本文中,我们将深入探讨结构型模式以及设计模式的基本原则。 结构型模式是设计模式的一种类别,它关注如何组合类和对象以创建更复杂的结构。这类模式主要涉及类和对象的组合,分为类模式和对象模式。类模式使用...

    软件架构与设计模式实验(结构型模式)定义.pdf

    软件架构与设计模式实验(结构型模式)定义 本实验报告的主要目的是设计适配器模式(Adapter)以掌握“结构型模式”的工作原理、应用环境和应用方法。实验中,我们将使用 Java 语言设计一个仿生机器人,使用适配器...

    Bridge 桥接模式(结构型模式)

    视频资源“7.Bridge 桥接模式(结构型模式).wmv”可能涵盖了以下内容: 1. 桥接模式的概念解释和基本结构。 2. 桥接模式的UML类图展示,解释各个角色之间的关系。 3. 实例演示,如图形界面库的设计,其中颜色和形状是...

    C#面向对象设计模式纵横谈-结构型模式(合集)

    本资源“C#面向对象设计模式纵横谈-结构型模式(合集)”由李建忠讲师讲解,涵盖了7种重要的结构型设计模式,它们对于构建高效、可维护的C#应用程序至关重要。以下是这7种结构型模式的详细介绍: 1. **代理模式**:...

    设计模式(创建型、结构型、行为型)

    结构型模式是指在软件设计中,如何将类组合在一起去构成更大的结构的模式。它主要解决了类之间的组合问题,包括适配器、桥接、组合、装饰、外观、飞weight和代理等七种模式。 行为型模式是指在软件设计中,如何定义...

Global site tag (gtag.js) - Google Analytics