学习设计模式之前先要知道UML类图中关系在代码中的体现:
聚合:一种弱“拥有”关系,比如雁群与大雁的关系:
class WideGooseAggregate
{
private WideGoose[]arrayWideGoose;
}
雁群WideGooseAggregate类中,有大雁数组对象arrWideGoose。也就是A聚合B(A对象包含B对象),则B中有A的数组对象。
组合:一种强“拥有”关系,鸟和它的翅膀。
class Bird
{
private Wing wing;
public Bird()
{
wing=new Wing();
}
}
在鸟Bird类中,初始化时,实例化翅膀Wing,它们之间同时生成。也就是组合关系中,初始化大的类时实例化小类。
依赖:就像动物依赖于氧气和水
abstract class Animal
{
public Metabolism(Oxygen oxygen,Water water)
{
}
}
在动物抽象类中,在新陈代谢方法中传氧气和水的两个参数。
继承:一个对象直接使用另一个对象的属性和方法。
class Pig:Animal
{
//Animal中的属性和方法可以直接用
}
“冒号”后边为继承对象,“冒号”后边也可以是实现对象,如果是实现,则实现对象一定是接口。
关联:一个“类”知道另一个“类”
class Penguin:Bird
{
private Climate climate;
}
企鹅Penguin中,引用气候Climate对象。也就是关联关系中,一个类中引用另一个对象。
以上是代码体现,每个设计模式都是用其中的几个关系组成的,但是一样的关系在不同的设计模式中可能思想不一样。有的封装使封装算法,有的封装使封装类,关系也是一样,还要再多用用,才可以。
设计模式从软考期间开始学习,学了好多遍了,可是还是感觉很迷糊,不能很好的理解其中的秘诀。模式的定义能说上来,可是自己其实还是不是很明白,更不能给别人讲明白。
自己一直没有总结设计模式也是因为理解不透彻,总结也都是把书上的知识点罗列起来,这次验项目听师父讲了一些,点通了一点每个模式的总结以后见了。
学习是一个循序渐进,不断深入的过程,俗话也说书读百遍其义自见,熟能生巧,这个设计模式我还要再学习,机房重构完了之后一定就能熟练掌握了吧。
到时候再来总结我自己理解的更加深入的东西。