原帖为:http://blog.csdn.net/zhengzhb/article/details/7187278
在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。
1. 依赖(Dependence)
依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中的表现还是比较直观的:类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。类上面的图例中:People类依赖于Book类和Food类,Book类和Food类是作为类中方法的参数形式出现在People类中的。
public class People{ //Book作为read方法的形参 public void read(Book book){ System.out.println(“读的书是”+book.getName()); } }
2.关联(Association)、、
单向关联:
双向关联:
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。关联关系分为单向关联和双向关联。在java中,单向关联表现为:类A当中使用了类B,其中类B是作为类A的成员变量。双向关联表现为:类A当中使用了类B作为成员变量;同时类B中也使用了类A作为成员变量。
public class Son{ //关联关系中作为成员变量的类一般会在类中赋值 Father father = new Father(); public void getGift(){ System.out.println(“从”+father.getName()+”获得礼物”); } } public class Father{ Son son = new Son(); public void giveGift(){ System.out.println(“送给”+son.getName()+“礼物”); } }
3.聚合(Aggregation)
聚合关系是关联关系的一种,耦合度强于关联,他们的代码表现是相同的,仅仅是在语义上有所区别:关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。
public class People{ Car car; House house; //聚合关系中作为成员变量的类一般使用set方法赋值 public void setCar(Car car){ This.car = car; } public void setHouse(House house){ This.house = house; } public void driver(){ System.out.println(“车的型号:”+car.getType()); } public void sleep(){ System.out.println(“我在房子里睡觉:”+house.getAddress()); } }
4.组合(Composition)
相比于聚合,组合是一种耦合度更强的关联关系。存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在时没有任何意义。在下图的例子中,People与Soul、Body之间是组合关系,当人的生命周期开始时,必须同时有灵魂和肉体;当人的生命周期结束时,灵魂肉体随之消亡;无论是灵魂还是肉体,都不能单独存在,他们必须作为人的组成部分存在。
Public class People{ Soul soul; Body body; //组合关系中的成员变量一般会在构造方法中赋值 Public People(Soul soul, Body body){ This.soul = soul; This.body = body; } Public void study(){ System.out.println(“学习要用灵魂”+soul.getName()); } Public void eat(){ System.out.println(“吃饭用身体:”+body.getName()); } }
5.继承(Generalization)
继承表示类与类(或者接口与接口)之间的父子关系。在java中,用关键字extends表示继承关系。UML图例中,继承关系用实线+空心箭头表示,箭头指向父类。
6.实现(Implementation)
表示一个类实现一个或多个接口的方法。接口定义好操作的集合,由实现类去完成接口的具体操作。在java中使用implements表示。UML图例中,实现关系用虚线+空心箭头表示,箭头指向接口。
在java中继承使用extends关键字,实现使用implements关键字,很直观。就不代码演示了
相关推荐
设计模式是中层次的设计模式,解决了局部设计问题。 idioms 是低层次的设计模式,描述了编程语言的实现细节。 软件体系结构(软件架构,软件架构模式):是一种高层模式,用于描述系统的结构组成、相互关系及相关...
本文档旨在提供一个关于设计模式在C++中的应用指南,并通过“关系视图”的形式来展现各种模式之间的联系与区别。 #### 关系视图概述 “关系视图”是一种直观的方式,用于展示不同设计模式之间的相互作用和关系。它...
设计模式是软件工程中解决常见问题的经验总结,通过模式的应用,可以使代码结构更加清晰,易于维护和扩展。里氏转换原则是设计模式中一个重要的理论基础,它对实现这些模式起到关键的指导作用。 1. **什么是里氏...
Java中的23种设计模式是软件工程中非常重要的概念,它们是解决常见编程问题的成熟解决方案,被广泛应用于各种复杂的软件系统中。这些模式在不同的上下文中提供了可重用的结构和行为,使得代码更加清晰、可维护和扩展...
这本书详尽地阐述了23种设计模式,这些模式在面向对象编程和软件设计中具有广泛的适用性。以下是对这些设计模式的详细解释和应用: 1. **单例模式 (Singleton)**:确保一个类只有一个实例,并提供一个全局访问点。...
接下来,我们将详细探讨这本书中涵盖的设计模式以及它们在Java编程中的应用。 设计模式是软件工程中的一种最佳实践,它是一种在特定场景下解决常见问题的经验总结。设计模式并不直接提供代码实现,而是描述在某种...
设计模式作为面向对象编程的核心组成部分,是软件开发者在长期实践中总结出来的最佳实践。通过深入理解这些设计模式,我们可以更好地进行面向对象的分析与设计(OOA/D),提高代码的质量和系统的可维护性。 #### ...
《C#设计模式PDF 电子书》是一本专注于C#编程语言中设计模式的应用和解析的书籍,2005年04版意味着它在设计模式领域的应用尚处于早期阶段,但仍然具有很高的学习价值。设计模式是软件工程中经过实践验证的、解决常见...
在《Java设计模式》这本书的模拟试题及其参考答案中,涉及了多条设计模式的知识点,以及它们的应用场景和实现方法。现在将这些知识点详细地解释如下: 1. 开闭原则(Open-Closed Principle, OCP): 开闭原则是面向...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。刘伟先生在讲解设计模式时,通常会深入浅出地介绍这些模式的原理、应用场景以及如何有效地在实际编程中应用它们。设计模式并不是...
在本书的前言部分(第3页),作者简要介绍了设计模式的概念及其在Java中的应用。他强调了学习设计模式的重要性,指出这不仅有助于提高代码质量,还能促进团队间的沟通与合作。 #### 二、学习过程 在“学习过程”...
在Java中,设计模式分为三类:创建型模式、结构型模式和行为型模式。每种模式都有其特定的应用场景和优势,理解并熟练应用这些模式对于提升代码质量、提高开发效率具有显著作用。 1. 创建型模式: - 单例模式:...
设计模式不仅包含模式的定义、用途和实现,还涵盖了如何在实际项目中应用这些模式,以及模式之间的相互关系和选择合适模式的考虑因素。通过学习和应用这些设计模式,开发者可以更好地设计出高质量、易于维护和扩展的...
在Java开发中,DAO模式通常与其他设计模式结合使用,如工厂模式(创建DAO实例)、策略模式(根据策略选择不同的数据访问方式)、单例模式(管理全局唯一的DAO实例)等,以进一步提升系统的灵活性和可维护性。...
### JAVA23中设计模式详解 #### 一、概述 设计模式是在软件设计过程中解决常见问题的一套可复用的解决方案。《JAVA23中设计模式》是一份针对Java程序员的指南,旨在通过一系列示例和理论讲解,帮助读者理解和掌握...
《C# 23种设计模式》是一本深入解析C#编程中常用设计模式的权威指南,对于想要提升代码质量、提高软件可维护性的开发者来说,是不可或缺的参考资料。书中详细介绍了23种经典的设计模式,这些模式是软件工程实践中...
这个问题可能用来比喻设计模式中的“容器模式”思想,即如何组织和管理对象之间的关系。 ### 5. .NET本质 这一部分可能是对.NET框架的一些底层原理和技术细节的介绍,为后续深入学习设计模式提供必要的背景知识。 ...
《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...
本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,...
设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中遇到的常见问题。这个压缩包文件名为“23种设计模式示例源码”,暗示其中包含了解决23种经典设计模式的具体实现代码,这对于初学者或者希望深入理解...