随笔分类 - 大话设计模式
摘要:一. 什么是原型设计模式? 1.1 原型设计模式的概念 原型设计模式的思想类似于我们常用的复制粘贴功能. 把一个地方的文件复制到另外一个地方, 复制完以后, 两个文件的内容是一模一样的. 原型设计模式的精髓也在于此. 原型模式用于创建重复的对象,首先创建一个实例对象, 然后通过拷贝实例对象创建一
阅读全文
摘要:一. 什么是状态模式? 状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换。当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。例如:淘宝下单,订单有待付款,已付款待发货,待收货
阅读全文
摘要:说到责任链设计模式, 我们平时使用的也真是挺多的. 比如: 天天用的网关过滤器, 我们请假的审批流, 打游戏通关, 我们写代码常用的日志打印. 他们都使用了责任链设计模式. 下面就来详细研究一下责任链设计模式 一. 什么是责任链设计模式? 官方定义: 责任链模式(Chain of Responsib
阅读全文
摘要:一. 什么是代理模式 1.1 概念 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用 也就是说客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。 通俗的来讲代理模式就是我们生活中常见的中介。 1.2 为什么不直接调用, 而要间接的调用对象呢? 一般是因为客户
阅读全文
摘要:装饰器模式 一. 什么是装饰器模式? 我们都知道装饰, 元旦, 圣诞节, 我们都需要装饰, 渲染节日气氛. . 所谓装饰, 就是在原来的基础上加东西. 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是对现有类
阅读全文
摘要:策略设计模式 透彻讲解 一. 什么是策略设计模式 设计模式有三种:创建型, 行为型, 结构型. 策略设计模式属于行为型. 为什么属于行为型呢? 来看看下面解释: 1.1 什么是策略呢? 什么是策略呢? 举个例子: 出行方式: 可以骑自行车, 摩托车, 开小汽车, 坐公交车, 坐火车, 轮船, 飞机等
阅读全文
摘要:简单工厂设计模式 透彻讲解 一. 什么是工厂 理解简单工厂设计模式, 首先要理解什么是工厂. 我们身边有很多工厂. 酿酒的酒厂, 制衣的衣厂, 加工肉类的肉加工厂等等. 这些工厂他们到底是怎么酿酒的? 怎么制衣的?怎么加工肉的? 我们并不知道, 也不需要知道. 不知道并不影响我们喝酒, 穿衣, 吃肉
阅读全文
摘要:一. 什么是开闭原则? 开放封闭原则(OCP,Open Closed Principle)是所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化、降低耦合,而开放封闭原则正是对这一目标的最直接体现。其他的设计原则,很多时候是为实现这一目标服务的. 1.1 先来看开闭原则的定义: Softwa
阅读全文
摘要:一. 什么是迪米特法则 迪米特法则(Law of Demeter )又叫做最少知识原则,也就是说,一个对象应当对其他对象尽可能少的了解。不和陌生人说话。英文简写为: LoD。 迪米特法则的目的在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存
阅读全文
摘要:一. 接口隔离原则的定义 Clients should not be forced to depend upon interfaces that they don't use. 客户端只依赖于它所需要的接口;它需要什么接口就提供什么接口,把不需要的接口剔除掉。 The dependency of o
阅读全文
摘要:一. 什么是依赖倒置原则 1.1 概念 依赖倒置原则(Dependence Inversion Principle, DIP), 其含义: 高层模块不应该依赖低层模块,两者都应该依赖其抽象 抽象不应该依赖细节, 细节应该依赖于抽象 要针对接口编程,不要针对实现编程 1.2 什么是依赖呢? 这里的依赖
阅读全文
摘要:设计模式原则 之 里氏替换原则(LSP) 有多少小伙伴是不知道里式替换原则的? 我们写了好多年的代码, 天天都在用继承, 子类. 可是, 却不知道里式替换原则? 赶紧来看看吧. 一. 什么是里式替换原则 1.1 里式替换原则定义 里式替换原则是用来帮助我们在继承关系中进行父子类的设计。 里氏替换原则
阅读全文
摘要:代理模式 场景描述: 1. 卓贾易喜欢娇娇, 但是, 娇娇并不认识卓贾易, 那么他给娇娇送花, 送巧克力,送洋娃娃 2. 卓贾易也可以不这么做, 他喜欢娇娇, 找一个人, 让这个人吧鲜花, 巧克力和洋娃娃送给娇娇. 这是两种方式, 但达到的目的是一样的。我们下面来看看这两个代码的实现: 第一种: 卓
阅读全文
摘要:今天又学习了一个设计模式 装饰模式 我们来看看装饰模式是如何一步一步引出的. 看看下面这个需求: 给一个人搭配衣服. 怎么搭配呢? 可以是嘻哈服, 也可以是西装, 也可以是运动装. 就像qq或者一些服饰搭配软件里那样, 给人进行不同的服饰搭配. 展现不同风格。下面来分析一下: 搭配的对象是人, 人就
阅读全文
摘要:依赖倒置原则 所谓的依赖倒置原则 A.针对接口编程, 不要针对实现编程 B.高层模块不应该依赖于底层模块, 两个都应该依赖于抽象 依赖倒置原则: 原话解释的是, 抽象不应该依赖于细节, 细节应该依赖于抽象. 说白了, 就是上面那句话。针对接口编程, 不要针对实现编程。 以计算机为例。无论是主板, 还
阅读全文
摘要:开放--封闭原则: 一、概念 开放-封闭原则, 指的是软件实体(类, 模块, 函数等等)应该可以扩展, 但是不可修改。 这个原则其实有两个特征, 对于扩展是开放的, 对于更改是封闭的. 做法: 对变化点进行抽象 我们在做任何系统的时候, 都不要指望系统一开始时需求确定, 就再也不会变化, 这是不现实
阅读全文
摘要:其实这里主要讲了写代码的一个原则,那就是本文的标题, 单一职责原则。 什么是单一职责原则呢? 书上是这么定义的: 就一个类而言, 应该仅有一个引起它变化的原因。 说实话: 这句话我并没有理解. 什么叫只有一个引起它变化的原因? 单一职责: 我的理解是, 一个类只有做一件事.(明白的大神, 请指点一下
阅读全文
摘要:策略设计模式 现在有一个需求: 给商场做一个收银软件. 营业员根据客户购买的产品的单价和数量, 向客户打印小票。 这个实现很简单. 一个类就可以搞定: 但是: 用面向对象的角度思考. 这个类将前端输入和业务逻辑混合在一块了. 不利于维护, 扩展, 复用, 也不灵活. 假如: 现在商场搞活动, 所有商
阅读全文
摘要:简单工厂设计模式 案例: 写一个计算器, 实现加减乘除. 分析: 1. 有两个数, num1 和 num2. 2. 有一个操作符 3. 有一个业务逻辑运算 第一步: 拿到这个业务, 我们直观的思考, 可以想象到这个业务非常简单: 分析: 这里完全没有使用到面向对象的特征. 下面回顾面向对象的特征 从
阅读全文