【Head First】类图关系与代码对应(Java)

亲!

最看Head First设计模式、深感比大话设计模式更深、当初感觉策略与工厂结合特别不爽、因为还要改工厂、这次直接用接口选择、不修改、只扩展、呼呼、听说有好多人看这个有难度、其实我看也有很多迷糊的、也许是因为与大话设角度的问题吧、这次从新总结了类图之间的关系、重在代码、是什么的知识就不讲了。

关系强度从弱到强:

依赖关系(Dependency)---关联关系(Association)---聚合(Aggregation)---组合(Composition)---泛化(Generalization)

关系与代码对应:

继承

<span style="font-size:18px;">Public class Father{
	//父亲类
}
Public class son extends Father{
	//儿子类继承父亲类
}</span>

实现接口

<span style="font-size:18px;">//买手机接口
Public interface BuyIPhone{
	//买手机方法
	Public void Buy();
}

Public class Father{
	//父亲类实现买手机方法
	Public void Buy(){
	//买手机代码略
	};
}</span>

依赖

依赖关系放到代码中就是在方法中声明或使用别的类、或者传入一个类的实例。

<span style="font-size:18px;">Public class IPhone{
	//具体方法略
}
//1、方法中声明或new
Public class chen{
	Public void Usephone(){
		IPhone chenphone;//声明
		IPhone chenphone = new IPhone();//New了一个手机的对象

	};
}
//2、当做方法的参数
Public class chen{
	Public void Usephone(IPhone chenphone){
		//实现略
	};
}</span>

关联(有一个)

这个与关联蛮像的、但是这个声明是在类里的、而不是某个方法。

<span style="font-size:18px;">//依赖的声明和NEW是在方法外面的
Public class chen{
	IPhone chenphone;//声明
	IPhone chenphone = new IPhone();//New了一个手机的对象
	Public void Usephone(){

	};
}</span>

关联和依赖的区别:

  • 从类的属性是否增加的角度看:

发生依赖关系的两个类都不会增加属性。其中的一个类作为另一个类的方法的参数或者返回值,或者是某个方法的变量而已。

发生关联关系的两个类,其中的一个类成为另一个类的属性,而属性是一种更为紧密的耦合,更为长久的持有关系。

  • 从关系的生命周期来看:

依赖关系是仅当类的方法被调用时而产生,伴随着方法的结束而结束了。

关联关系是当类实例化的时候即产生,当类销毁的时候,关系结束。相比依赖讲,关联关系的生存期更长。

组合

B类构造时候、在自身类中NEW了一个A对象、B对象释放、A对象随之释放。

<span style="font-size:18px;">Publicclass Bird{
<span style="white-space:pre">	</span>Public Wing wing;
<span style="white-space:pre">	</span>Public void Bird(){
<span style="white-space:pre">		</span>wing =new Wing;
<span style="white-space:pre">	</span>};
}</span>

鸟没了翅膀也没法活。

聚合

B类构造时从类外传进一个对象A、B对象释放、A对象还在外面没释放。

<span style="font-size:18px;">Publicclass BirdGroup{
<span style="white-space:pre">	</span>Public  Bird bird;
<span style="white-space:pre">	</span>Public void BirdGroup(Bird b){
<span style="white-space:pre">		</span>bird =b;
<span style="white-space:pre">	</span>};
}</span>

鸟群没了、鸟照样活。

设计原则


页数


原则


9


找出变化的、把他们独立,不和不需要变化的混在一起


11


针对接口编程、而不针对实现编程。


23


多用组合、少用继承


53


为交互对象之间的松耦合努力


86


开放扩展、关闭修改


139


依赖抽象、不依赖具体


265


最少知道原则:只和密友谈话


339


一个类应该只有一个引起变化的原因

总结:

第二次看设计模式最大的感触就是、实践、实践过的时基模式都很容易产生共鸣、而看懂了却没有自己写(指不看书敲代码、例子、或者使用设计模式)、没自己写的都有种似懂非懂、还是缺少联系吧、这次总结了下关系的代码、其实都挺简单的、平常都用、搞这行的、都是敲出来的。

——————————欠练——————————

————————chenchen————————

时间: 2024-10-09 17:36:41

【Head First】类图关系与代码对应(Java)的相关文章

UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html http://sundensky.blog.163.com/blog/static/7728873420109299167434/ 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系

UML类图关系(转,添加了实例)

UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) [泛化关系]:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为.例如:老虎是动物的一种,即有老虎的特性也有动物的共性. [箭

【UML】UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性:  实现 指的是一个class类实现interface接口(可以是多个)的

UML类图关系全面剖析

UML的类图关系分为: 关联.聚合/组合.依赖.泛化(继承).而其中关联又分为双向关联.单向关联.自身关联:下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里. 1.关联 双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针.对象引用本身就是有向的,更适合表达我们所讨论的那种关系.所以这

UML类图关系大全

UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针.对象引用本身就是有向的,更适合表达我们所讨论的那种关系.所以这种关系在设计的时候比较少用到,关联一般都是有向的. 使用ROSE 生成的代码是这样的: class C1 ...{ public:     C2* th

类图关系

1.类图概述 何谓类图? 它描述的是显示一组类.接口.协作以及它们之间关系的图. 类与类之间有哪些关系? 四种关系:依赖.关联[含特殊的聚合和复合(组合)].泛化(继承).实现. 2.依赖关系 依赖关系是两个类之间的语义关系,对一个类(提供者)的改变可能会影响或者提供消息给其他类(客户).也就是客户以某种方式依赖于提供者. 依赖强调的是类发生改变引起其他类相应地变化,它不仅可以由于类之间的关联引起,也可以由于类的参数变化(该参数也是类)以及类之间消息传递机制引起.只要是类发生了变化引起另一个类的

图解六大UML类图关系

在学习UML类图的过程中,UML类图关系是必须要掌握的问题,UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.下面对其定义和表示方法逐一说明. UML类图关系简介 依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A:类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述.UML中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素. 类属(Generalization):通常所说的继承(特殊

UM类图关系(继承,实现,依赖,关联,聚合,组合)

1.继承(is-a) 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性: 2.实现 指的是一个class类实现interface接口(可以是多个)的功能:实现是类与接口之间最常见的关系:在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性: 3.依赖(uses-a) 可以简单的理解,就是一

6 cocos2dx粒子效果,类图关系,系统原生粒子和自己定义粒子效果,粒子编译器软件,爆炸粒子效果,烟花效果,火焰效果,流星效果,漩涡粒子效果,雪花效果,烟雾效果,太阳效果,下雨效果

?? 1 粒子 演示样例 2 类图关系 3 系统原生粒子 CCParticleSystem 全部粒子系统的父类 CCParticleSystemPoint. CCParticleSystemQuad 点粒子和方形粒子系统,都继承了CCParticleSystem的全部属性 CCParticleExplosion 爆炸粒子效果 CCParticleFireworks 烟花粒子效果 CCParticleFire 火焰粒子效果 CCParticleMetepr 流行粒子效果 CCParticleSpi