美文网首页
head first 设计模式

head first 设计模式

作者: xinxinlimin | 来源:发表于2017-10-23 21:35 被阅读0次

最近一段时间一直在看head first 设计模式,感触颇深,遂把其中之心得记录之,以便遗忘时重新熟悉。


6种设计原则

1.分离不变与可变:将可变元素提出,作为单独的模块,通过组合调用,不变的模块作为类。

2.多用组合,少用继承

3.面向接口编程,不要面向实现编程

4.为了交互对象之间的耦合设计而努力


设计模式

分为创建性模式、指责型模式、行为型模式(本人所写设计模式完全根据书籍顺序)

1.策略模式(行为型模式):

类图(总图)

题目描述:为每种鸭子设置动作,fly、swim、quick、display四个方法。我们首先想到的编程方法为两个鸭子(红头鸭、绿头鸭)继承自Duck抽象类,如下:

类结构图

需求改变了,要使红头鸭会飞,绿不会飞,想到可以覆盖duck中的fly方法,一个会飞,一个什么都不做。

现在需求又变了,来了一百只鸭子,五十只会飞,其他不会飞。怎么办? 每个都覆盖?

现在需求又变了,鸭子会了新的动作,会跳舞(dancing),怎么办?duck加,所有子类覆盖?

显然是不现实的,软件的复用(关闭修改、打开扩展)显得尤为重要。

既然鸭子的动作会变(不同的叫声、不同的飞行方式、不同的跳舞方式),而有些不会变(swim与display),由此我们可以分离不变与可变。将fly,quick提取,同时子类功能实现父类接口(面向接口编程),由此我们可以通过多用组合,少用继承(duck与fly、quick用组合)增加程序的伸缩性,并通过在抽象类中定义引用,然后通过set方法注入来完成组合。

最后:注意一点,尽量不要在结构中出现new,用构造方法传参或者set注入在client中生成对象后注入,这样可以增加程序的灵活性,同时可以动态修改。

对比 两者的动态性完全不同

2. 观察者模式

类图(总图)

观察者模式实质上就是在主题中加入list,将观察者封装。(加入get的作用是观察者可自行取舍)。同时也可以看出:动态加入的只是接口引用,而非具体实现,所以改变一方,另一方不会受影响(为了交互对象之间的耦合设计而努力

3. 装饰者模式

相关文章

  • 2018-12-11

    head first html css word书籍 http权威指南 head first设计模式

  • 好书推荐

    1、主要讲23种设计模式《Head First设计模式》

  • 设计模式--策略模式

    ps:本文主要来源于Head First 设计模式(抄Head First的),如有不懂请购买原书观看。 策略模式...

  • 设计模式:如何优雅地使用责任链模式

    责任链模式(Chain of Responsibility Pattern)在《Head First设计模式》一书...

  • Swift设计模式-目录

    推荐图书:《Head First设计模式》《大话设计模式》《设计模式之禅》, 设计模式思维导图 图形说明一切: 设...

  • head first 设计模式

    最近一段时间一直在看head first 设计模式,感触颇深,遂把其中之心得记录之,以便遗忘时重新熟悉。 6种设计...

  • 《head first 设计模式》

    本书的产品设计应用神经生物学、认知科学,以及学习理论,这使得这本书能够将这些知识深深地印在你的脑海里,不容易被遗忘...

  • Head First 设计模式

    初衷 在写本文之前,一直在学习设计模式,但是有一个问题,看完的内容,过几天就忘记了,顾从头再来一次,顺便做个记录。...

  • HEAD FIRST 设计模式

    <第一章读后感> 1.OO基础: 抽象:将具体问题抽象出一个类,提供接口,不需要关心具体实现,就是一个父类.除了被...

  • 1.设计模式入门-策略模式

    《HEAD FIRST 设计模式》在第一章设计模式入门中介绍了策略模式(Strategy Pattern)。 定义...

网友评论

      本文标题:head first 设计模式

      本文链接:https://www.haomeiwen.com/subject/diiauxtx.html