设计模式入门介绍

1.为什么要学习设计模式

我们在写代码的过程中会遇到各种各样的问题,很多问题其他开发人员也遇到过,且已经顺利解决。我们可以借鉴其他开发人员的经验和智慧(就跟你遇到bug,去百度,Google一样),这样可以节约时间和精力去做更多,更有意义的事。
通常我们管学习和使用设计模式叫–经验复用。

2.设计原则

我们在设计软件时需要遵循的规则,这些规则是前人总结出来的经验,我们运用这些经验会让我们的设计更灵活,可复用。

1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。

做法是:分开分开会变化和不会变化两个部分。

这样做的目的是可以让“系统中某部分改变不会影响其他部分”。

这个设计原则是每个设计模式背后的精神所在,我个人认为也可以理解为设计模式的核心。

2.针对接口编程,而不是针对实现编程

我们把通用的行为通过接口抽象出来,这样我们就能在“运行时” 、“动态地”、改变它。

书中给出的例子时各种鸭子(会飞的、不会飞的;会叫的、不会叫的)的行为(飞和叫),我们把鸭子的行为抽象成飞和叫(Fly和Quack)两个接口。
之后我们通过实现接口来规定鸭子怎么飞,怎么叫;这样抽象出这两个会变化的行为,我们就可以让其被复用,不管鸭子类或者行为类怎么变化,都不影响另一个。且我们的行为还可以复用给其他类(比如鸟)

针对接口编程的真正意思是针对超类型编程(接口是一个概念,也可以是Java interface构造),我们可以在不涉及Java interface的情况下,针对超类型编程(利用多态,使程序在运行时得到真正的行为)。

针对超类型编程准确的来说是,变量声明应该为超类型。

3.多用组合,少用继承

可理解为,软件设计中“有一个”比“是一个”更好。例:上个例子中,鸭子拥有的两个行为不是通过“继承”得来的,而是通过和适当得行为对象“组合”而来。

使用组合系统建立得系统,有两大优点:
1)可将算法族封装成类;
2)在运行时动态地改变行为。
……
(后续会学到其他设计原则,我会持续更新)

4.第一个设计模式–策略模式

1.定义

策略模式定义了算法族,分别封装起来,让他们之间可以互相替换。此模式让算法的变化独立于算法的客户

2.理解

我对于策略模式的理解,策略模式分为:
1)分离变化和不变化的部分;
2)定义算法族和算法的客户;
3)使得算法族和算法的客户相互独立,变化时互不影响;
4)通过组合让算法的客户拥有算法族。

5.设计模式的魅力

设计模式使得开发者之间有共享词汇。

1)共享的模式词汇“威力巨大”:互相交流时,它象征的不只是名字,还包括,模式背后的质量 、特性 、约束;
2)能让你用更少的词汇做更充分的沟通;
3)可以让你保持在设计层次:不会被压到对象和类这种琐事上;
4)可以帮助团队快速充电:了解设计模式的团队,对设计的看法不容易产生误解;
5)可帮助初级开发者迅速成长。

6.设计模式与库的区别

我们利用库与框架的api组织、编译成我们需要的程序。设计模式帮助我们把应用组织成容易了解 、容易维护 、具有弹性的架构。
库与框架直接进入你的代码,而设计模式先进入的是你的大脑,然后,你可以在设计中采用他们。
设计模式时比库与框架更高等级的东西。库与框架不是设计模式,但是,有时候库与框架有时候也需要用到设计模式。没有设计模式的库。

你可能感兴趣的:(设计模式)