Solo  当前访客:0 开始使用

CoderV的进阶笔记


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

GOF设计模式小白教程之工厂方法模式 有更新!

2019-09-03 23:54:57 valarchie
0  评论    0  浏览

工厂方法

定义:

定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当 中。这符合六大原则中的依赖倒置原则。依赖抽象而不依赖实现。

通俗解释:

有一个顾客想去4S店试车,不管他去到哪一家4S店只要说我想试车。4S店就会给他一辆 车试开。这里的顾客就是用户类,说“我想试车”就是用户的调用方法。4S店就是抽象工 具体工厂有宝马4S店,奔驰4S店。车就是抽象商品,宝马车奔驰车就是具体商品。下一 顾客去沃尔沃的话,还是只需要说原来的那句话“我想试车”。不需要改变自己的话就可 以继续试其他4S店的车。

GOF设计模式小白教程之抽象工厂模式 有更新!

2019-09-03 23:50:39 valarchie
0  评论    0  浏览

抽象工厂

定义:

是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就
能得到同族的不同等级的产品的模式结构。

通俗解释:

有一个很爱吃汉堡可乐的顾客,他每次去肯德基或者麦当劳的时候,只需要跟服务员说我要吃汉堡薯条
可乐即可。这里的顾客就是访问类,快餐店就是抽象工厂,肯德基和麦当劳是工厂实现类。汉堡、可乐
是抽象产品族。肯德基生产具体产品奥尔良鸡腿堡和百事可乐。麦当劳生产具体产品麦辣鸡腿堡和可口
可乐。

DRY、KISS、YAGNI三原则的理解 有更新!

2019-09-03 23:47:08 valarchie
0  评论    0  浏览

软件三原则的个人理解

在软件的设计当中前人已经总结了许多的设计原则和设计模式。例如SOLID,GRASP设计原则,这些原则都是基于面向对象设计总结而来的。而GOF23是基于许多常见的场景总结出了一套设计模式,在我们遇到类似的场景,都可以套用设计模式。而今天所讲到的软件三原则是适用于在软件设计的各个层面的。它不仅适用于面向对象的设计,也适用于面向过程的程序设计;不仅适用于类的设计,也适用于模块、子系统的设计。就连在项目架构运维部署中也适用于这一套简单的法则。

GRASP设计原则 有更新!

2019-09-03 23:20:21 valarchie
0  评论    0  浏览

GRASP设计原则

GRASP(General Responsibility Assignment Software Pattern)是通用职责分配软件设计模式。
它由《UML和模式应用》(Applying UML and Patterns)一书作者Craig Larman提出。在面向对象设计的过程中一般的通用方式是构思对象的职责、角色和协作。通常来说,我们在编码过程中先分析问题域,从中抽象出对象解决问题。简单的面向对象和优良的面向对象设计的区别在于将如何更合理的划分对象的角色,给对象赋予合理的职责以及对象之间的交互关系。

在我所理解的GRASP九大原则、SOLID七大原则、GOF23种设计模式这三类设计原则模式中。GRASP处于最上层,SOLID基于它再进一步细化阐述,GOF再根据这些原则进一步的归纳出更具体的模式。
GoF模式是针对特定问题而提出的解决方案,而GRASP站在一个更高的角度来看待面向对象软件的设计,它是GoF设计模式的基础。GRASP是对象职责分配的基本原则,其核心思想是职责分配,用职责设计对象。

面向对象编程之七大设计原则 有更新!

2019-09-03 23:08:48 valarchie
0  评论    0  浏览

七大设计原则 — SOLID

这五大原则是业界在面向对象设计中经过总结精炼得出,在英文表示下各个原则
首字母缩写就是SOLID。

  • Single Responsibility Principle:单一职责原则
  • Open Closed Principle:开闭原则
  • Liskov Substitution Principle:里氏替换原则
  • Interface Segregation Principle:接口隔离原则
  • Dependence Inversion Principle:依赖倒置原则

另外还有两个设计原则。

  • Law of Demeter:迪米特法则
  • Composite/Aggregate Reuse Principle:组合/聚合复用原则

GOF设计模式小白教程之访问者模式

2019-09-03 00:17:09 valarchie
0  评论    0  浏览

访问者模式(Visitor)

定义:

将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。

通俗解释:

访问者模式的确挺不好理解的。我们举一个非常简单的例子,例如年底服装公司要盘点库存了。仓库衣服也有裤子,小A负责盘点衣服,小B负责盘点裤子。如果将这两个盘点都写在仓库类当中的话,一旦新品类(比如鞋子)出现的话,又需要在仓库类中修改代码了,所以为了遵守开闭原则,我们将员工盘点货品的方式抽离出来,进行解耦。小A和小B其实就是访问者。而裤子和衣服就是元素。仓库类是某种数据结构。

GOF设计模式小白教程之模板方法模式

2019-09-02 22:12:56 valarchie
0  评论    0  浏览

模板方法模式(Template Method)

定义:

定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。

通俗解释:

好比相亲一样,媒人跟男方说,你们约会的流程就是先逛街,再吃饭,再看电影,然后就结束约会啦。具体怎么逛街,吃什么饭,看什么电影,男方自己决定。模板方法模式就是这么的简单。

GOF设计模式小白教程之策略模式

2019-09-02 21:42:13 valarchie
0  评论    0  浏览

策略模式(Strategy)

定义:

该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。

通俗解释:

玩过英雄联盟的小伙伴都知道有野兽之灵乌迪尔这个英雄,这个英雄拥有不同的形态,例如熊形态,龟形态,老虎形态。如果代码编写成if-else,通过判断野兽之灵是什么形态来进行什么样的攻击的话,后期游戏想继续增加新的形态的话,就会破坏原有的代码。所以我们必须遵循开闭原则,通过将形态抽离出来进行解耦。在JDK当中的集合排序,通过传入不同的比较器来进行比较,也是策略模式的体现。

GOF设计模式小白教程之状态模式 有更新!

2019-09-02 20:51:02 valarchie
0  评论    0  浏览

状态模式(State)

定义:

对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。

通俗解释:

玩过英雄联盟的同学都知道卡牌大师这个英雄。卡牌大师有一个技能是根据卡牌的颜色攻击对手的话,会有不同的效果。这种效果体现在攻击力,耗蓝量,还有特殊效果。并且出牌颜色是随机的,所以这边就有状态的流转。如果我们采用if-else方法的话,就需要在攻击方法,耗蓝量,以及特殊效果上依次用if-else判断当前的牌的颜色来写代码。但这就违反了开闭原则。我们应该将这些“业务逻辑”抽取出来,放进一个一个的状态类当中。状态模式和策略模式很相像,状态模式主要不同在于对象内部状态的流转,并且行为是随着状态自动改变的。而策略模式是通过动态的切换策略来更改当前类的行为。

GOF设计模式小白教程之观察者模式

2019-09-02 00:06:16 valarchie
0  评论    0  浏览

观察者模式(Observer)

定义:

指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。

通俗解释:

好比一个网络聊天室模型。有多个聊天者在聊天室内聊天,其中一个聊天者发送一条消息,则需要通知所有聊天者查看消息。例如我们App当中的通知机制也是如此,保存用户的标志,然后挨个给每个用户推送信息。

TOP