Solo  当前访客:0 开始使用

CoderV的进阶笔记


Everybody wants go to heaven, but nobody wants to die.

存档: 2019 年 08 月 (17)

GOF设计模式小白教程之命令模式 有更新!

2019-08-31 01:04:17 valarchie
0  评论    0  浏览

命令模式(Command)

定义:

将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。

通俗解释:

假设司机是命令发出方,而车子是命令接收方。司机与车子通过命令对象来传达指令操作车子从而进行解耦。司机并不知道最终命令执行的是谁,车子也不知道是谁在下达命令。

GOF设计模式小白教程之责任链模式

2019-08-30 22:02:29 valarchie
0  评论    0  浏览

责任链模式(Chain of Responsibility)

定义:

为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。

通俗解释:

这个模式非常简单。就好比小明在公司请假。先把假条给组长审批,组长再把假条给经理审批,经理再把假条给老板审批。

GOF设计模式小白教程之代理模式

2019-08-30 20:40:24 valarchie
0  评论    0  浏览

代理模式(Proxy)

定义:

由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。

通俗解释:

好比去动车站买动车票,如果家离动车站比较远的话肯定就非常不方便。这时候我们就可以选择离家近的动车站代售点买票。这里的代售点就相当于代理类。代售点出票也是先从动车站出,然后再售卖给我们。比如Spring中的AOP原理也是代理模式,通过一个代理对象访问真实的对象。例如Hibernate的延迟加载也是,load方法查询得到的对象仅仅只是一个代理对象,等到真正想要获取对象属性的时候才进行数据库查询。

GOF设计模式小白教程之享元模式 有更新!

2019-08-30 20:40:51 valarchie
0  评论    0  浏览

享元模式(Flyweight)

定义:

运用共享技术来有効地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。
享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部,不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。

通俗解释:

设计一个围棋游戏程序,每下一个棋子我们就新建一个棋子的对象。棋盘大小的是19*19=361的位置,下满棋盘的话就需要创建361个对象。而分析一下,其实棋子在表现模型上是一样的,只分为黑棋和白棋。我们只需要共享一个黑棋一个白棋,在下棋的时候通过传入棋盘的坐标即可。例如JDK当中的String类型,不同地方相同的字符串会引用缓存池当中的同一个字符串,这也是享元模式的一种体现。

GOF设计模式小白教程之门面模式

2019-08-30 00:48:56 valarchie
0  评论    0  浏览

门面模式(Facade)

定义:

是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。

通俗解释:

玩单反的人都知道要出拍一张好的照片,涉及到调光圈,快门,调焦距,ISO等复杂的拍摄技巧。那普通人想拍照又不想学这些复杂的拍摄技巧呢?不用担心,因为有傻瓜相机,只需要按一下快门即可拍出一张照片。傻瓜相机就相当于一个门面,而那些光圈,快门,焦距属于复杂的子系统。我们就通过门面,屏蔽了子系统的复杂性。

GOF设计模式小白教程之组合模式

2019-08-29 23:55:10 valarchie
0  评论    0  浏览

组合模式(Composite)

定义:

有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。

通俗解释:

假设我们需要做一个计算零件价钱的类。输入一个零件就计算出对应的价钱。那如果我们有一个成品它由3个大零件组成,每个大零件又由3个小零件组成。这个成品一共包含了9个零件。这时候我们就需要一个接收单个零件的计算方法,还有一个接收成品的计算方法。如果这样的话,就得需要重载两个方法,并且还需要让用户自己判断这个物品是成品还是零件。所以这时候就需要使用组合模式,将零件和成品统一的看待,类也仅需一个计算方法,它可以接收零件和成品的共同抽象类。

GOF设计模式小白教程之装饰者模式

2019-08-29 22:35:47 valarchie
0  评论    0  浏览

装饰者模式(Decorator)

定义:

指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。

通俗解释:

在很多网络游戏当中,武器都可以进行附魔。比如一把普通的刀。可以附魔火属性,也可以再附魔冰属性,还可以再附魔风属性。对于武器的附魔。相当于动态地给武器添加额外的功能。在装饰者模式中,被装饰的对象和装饰对象继承的是同一个接口,所以对象被装饰过后还是跟原来的对象接口一致,所以就可以不同组合的进行装饰。

GOF设计模式小白教程之桥接模式

2019-08-29 21:53:31 valarchie
0  评论    0  浏览

桥接模式(Bridge)

定义:

将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

通俗解释:

假设我们写一个画图程序,要实现画长方形、正方形、圆形。很简单我们只需要抽象出一个Shape抽象类,然后长方形、正方形、圆形继承这个Shape类,绘制方法就交给子类实现。但是如果再加上一个需求,要绘制红黄蓝三种颜色的图形怎么办?如果再用继承来实现这个需求的话,光长方形就需要红长方形,黄长方形,蓝长方形三个子类。依次类推,一共需要继承出九个子类。SOLID原则讲到要尽量用聚合来替代继承来扩展功能。多层级的继承代码耦合性非常大,而且类不利于重用。这时候就需要桥接模式。通过抽象的Shape类当中去持有抽象的Color类,打破原本的继承关系,那么Shape类的扩展和Color的扩展都可以独立的变化不需要修改原类,这也是开闭原则的一种体现。

GOF设计模式小白教程之适配器模式 有更新!

2019-09-04 12:25:29 valarchie
0  评论    0  浏览

适配器模式(Adapter)

定义:

将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

通俗解释:

有一个中国人和一个日本人,他们都只会母语并且不想再学习其他语言(意味着不修改两个不兼容的类的代码)。但是他们之间又想进行交流,那怎么办呢?这时候如果有翻译的话就可以让中国人和日本人不用学习新的语言,即可互相交流。这里的中国人和日本人是互不兼容的两个接口,而翻译就是他们之间的适配器。

GOF设计模式小白教程之单例模式 有更新!

2019-08-28 21:26:21 valarchie
0  评论    0  浏览

单例模式(Singleton)

定义:

该模式只涉及到一个类,该类负责创建自己的对象,同时确保只有唯一一个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

通俗解释:

好比以前的计划生育一对夫妻只能有一个孩子,因为生育抚养孩子的成本太高了。所以限制只能有一个。单例模式也是如此,为了节省创建对象的成本或节省对象占用的内存空间而实现的模式。

单例模式最重要的三点特征如下:

  • 单例类只有一个实例对象;
  • 该单例对象必须由单例类自行创建;
  • 单例类对外提供一个访问该单例的全局访问点;
TOP