设计模式-创建型-原型模式
引言:
原型模式是什么?它是在什么场景下被提出的呢?本章节,我们将详细了解下原型模式。
在软件系统中,当创建一个类的实例过程过于昂贵或复杂,并且我们需要创建多个这样类的实例时,如果我们通过new来创建类实例,这就会增加创建类的复杂度和创建过程与客户代码复杂的耦合度。如果采...[2019/9/17]
设计模式-创建型-建造者模式
引言:
无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、底盘、发动机、方向盘等各种部件。而对于大部分用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车。有的人说:抽象工厂模式不是用来生产产品...[2019/9/17]
观察者模式
观察者模式
观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,==一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通...[2019/9/17]
设计模式-创建型-工厂模式
工厂设计模式:
顾名思义,该模式是用来生产对象的。在面向对象的设计模式中,万物皆对象,若使用new来创建对象,就会对该对象产生强耦合,加入我们需要更换该对象,那么使用该对象的对象都需要进行修改,这显然违背了开闭原则(OCP)。如果我们使用工厂来产生对象,我们只需要与这个工厂打交道...[2019/9/16]
设计模式-创建型-抽象工厂模式
前一章节,我们介绍了简单工厂模式以及工厂方法模式,但是这两种模式都存在一定的局限性,只能生产某一类型下的某一种产品,如果需求变更,同类型下出现了不同的产品,比如芝士披萨不仅有口味上的不同,同时存在外观上的不同。这种时候,工厂模式显然不再满足要求,该怎么办呢?于是我们想到DIP原则,它...[2019/9/16]
同步、异步、阻塞、非阻塞
目录
同步、异步、阻塞、非阻塞
1、同步
2、异步
3、同步与异步的区别
4、阻塞与非阻塞
5、阻塞非阻塞与同步异步的区别?(故事篇)
...[2019/9/16]
面向对象的设计原则
1.前言
面向对象三大特性:继承,封装,多态
面向对象是一种程序思想
而设计模式是一些代码设计经验形成的设计范式
面向对象的设计原则是介于面向对象和设计模式中间,是面向对象优秀代码的设计思想
2.面向对象设计七大原则
说到设计原则,不免说到七大原则
(...[2019/9/16]
策略模式
策略模式采用组合的形式,把一个算法任务委托给被组合的接口,根据运行时传入对象的不同,算法可以做到相互替换,同时这些变化可以独立于具体的使用者。
例如,一般车上都会有喇叭,不同的车喇叭的声音不...[2019/9/16]
C++ 深入浅出工厂模式(进阶篇)
介绍
前文初始篇C++ 深入浅出工厂模式(初始篇),主要阐述了简单工厂模式、工厂方法模式和抽象工厂模式的结构、特点和缺陷等。以上三种方式,在新增产品时,要么修改工厂类,要么需新增具体的工厂类,说明工厂类的封装性还不够好。
本文进阶篇,主要是将工厂类的封装性提高,达到新增产品时,也不需要...[2019/9/16]
通俗易懂设计模式解析——代理模式通俗易懂设计模式解析——代理模式
前言
今天讲的是结构型设计模式中的最后一个,这个模式也就是代理模式,在前段时间我写的一篇关于正向代理和反向代理的文章。虽说此代理非彼代理。但是代理一词还是具有相似的含义的。这里我们继续使用文章中的代购一个例子来讲述一下代理模式吧,人不方便去购买哪些物品,这时就有一个中间人,他来购买...[2019/9/12]
设计模式-创建型-单例模式
单例模式:对于类的单例模式设计,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。
单例模式有8种方式:
1、饿汉式(静态常量)
2、饿汉式(静态代码块)
3、懒汉式(线程不安全)
...[2019/9/12]
设计模式六大原则:迪米特法则
目录:
设计模式六大原则:单一职责原则
设计模式六大原则:接口隔离原则
设计模式六大原则:依赖倒置原则
设计模式六大原则:里氏替换原则
设计模式六大原则:迪米特法则
设计模式六大原则:开闭原则
迪米特法则(LOD...[2019/9/11]
代理模式
前言
小龙同学花费毕生绝学精心学习并制作了自动化测试之selenium ,但预定分享时间时,小龙龙同学胆怯了,于是大哥小强出马,帮他完成预定分享时间的工作
代理模式
为其他对象(小龙)提供一个代理(小强)以控制对这个对象的访问. 类图如下:
优点:
职责清晰。
高扩展性。...[2019/9/10]
设计模式六大原则:单一职责原则
目录:
设计模式六大原则:单一职责原则
设计模式六大原则:接口隔离原则
设计模式六大原则:依赖倒置原则
设计模式六大原则:里氏替换原则
设计模式六大原则:迪米特法则
设计模式六大原则:开闭原则
单一职责原则:
...[2019/9/10]
Monad 在实际开发中的应用
版权归作者所有,任何形式转载请联系作者。
作者:tison(来自豆瓣)
来源:https: www.douban.com/note/733279598/
Monad 在实际开发中的应用
不同的人会从不一样的角度接触 Monad。大多数网上的教程和介绍都从其严格的定义出发,加上几个玩具示...[2019/9/10]
设计模式之策略模式
策略模式定义:分别封装行为接口,实现算法族,超类里放行为接口的对象,在子类里具体设定行为对象。原则就是:分离变化部分,封装接口,基于接口编程各种功能。此模式让行为算法的变化独立于算法的使用者。
好处:新增行为简单,行为类更好的复用,组合更方便。既有继承带来的复用好处,没有挖坑
&nbs...[2019/9/10]
设计模式六大原则:里氏替换原则设计模式六大原则:里氏替换原则
目录:
设计模式六大原则:单一职责原则
设计模式六大原则:接口隔离原则
设计模式六大原则:依赖倒置原则
设计模式六大原则:里氏替换原则
设计模式六大原则:迪米特法则
设计模式六大原则:开闭原则
里氏替换原则:
...[2019/9/10]
错误日志之观察者模式
星期一
情景
早晨,项目组长来到小明身边,“有人反映咱们的项目有Bug” “什么Bug?” “不知道,你添加一个日志模块自己看记录去。” ”...“
分析
在MVC全局过滤器中自己添...[2019/9/10]
设计模式六大原则:接口隔离原则设计模式六大原则:接口隔离原则
目录:
设计模式六大原则:单一职责原则
设计模式六大原则:接口隔离原则
设计模式六大原则:依赖倒置原则
设计模式六大原则:里氏替换原则
设计模式六大原则:迪米特法则
设计模式六大原则:开闭原则
接口隔离原则(In...[2019/9/10]
Reactor模式
什么是Reactor模式
Reactor模式是一种设计模式,它是基于事件驱动的,可以并发的处理多个服务请求,当请求抵达后,依据多路复用策略,同步的派发这些请求至相关的请求处理程序。
Reactor模式角色构成
在早先的论文An Object Behavioral Patter...[2019/9/10]
设计模式六大原则:依赖倒置原则设计模式六大原则:依赖倒置原则
目录:
设计模式六大原则:单一职责原则
设计模式六大原则:接口隔离原则
设计模式六大原则:依赖倒置原则
设计模式六大原则:里氏替换原则
设计模式六大原则:迪米特法则
设计模式六大原则:开闭原则
依赖倒置原则(De...[2019/9/10]
设计模式六大原则:开闭原则
目录:
设计模式六大原则:单一职责原则
设计模式六大原则:接口隔离原则
设计模式六大原则:依赖倒置原则
设计模式六大原则:里氏替换原则
设计模式六大原则:迪米特法则
设计模式六大原则:开闭原则
开闭原则(Open...[2019/9/10]
漫谈golang设计模式 简易工厂模式
目前学习golang的主要需求是为了看懂TiDB的源码,下面我们复习一下简易工厂模式的思想
工厂类型分为三种,创建型模式,结构型模式,行为型模式。
简单工厂
使用场景:考虑一个简单的API设计,一个模块可以提供不同的APi,这些Api都源自同一个基类,不过在继承基类后不同的...[2019/9/2]
C#代码实现IoC(控制反转)设计,以及我对IoC的理解
一. 什么是IoC
当在A类中要使用B类的时候,我们一般都是采用new的方式来实例化B类,这样一来这两个类就有很强的依赖关系,不符合低耦合的设计思想。这时候我们可以通过一个中间容器来实例化对象,需要的时候就可以通过容器获取一个B类的对象。这种思想就是IoC(控制反转),其实我觉得叫控制转...[2019/8/30]
结构型设计模式 -- 适配器模式结构型设计模式 -- 适配器模式
一、小案例分析
1、功能需求:
以电源适配器为例。 一个人去外国旅游,住在外国某宾馆,恰好手机没电(手机是双孔插头),但外国宾馆只有三孔插座,宾馆一般不可能为了旅客,将三孔插座换成双孔插座,此时适配器就派上用场了,将双孔插头转成三孔插头,即可满足要求。
2、什么是适配器模式:
...[2019/8/30]
设计模式之状态模式(二)
在上一次的文章里,我们看到,需求的变更,迫使我们需要重新改造现有的糖果机代码来符合这个新提的需求。但是,也并没有难倒我们,至少我们在文末给出了思路和类图,不知道你想的怎么样了呢。
我们不来虚的,直接进入正题,开启我们的学习之旅。
实现我们的状态类
现在是实现一个状态的时候了:我们知道...[2019/8/29]
设计模式笔记(一:Singleton 设计模式)
今天开始学习设计模式,借此机会学习并整理学习笔记。
设计模式是一门不区分语言的课程,什么样的编程语言都可以用到设计模式。如果说java语法规则比作武功招式的话,那么设计模式就是心法。
设计模式共有23种,常见的19种,最常用的9-10种。
设计模式分三种类型:创建型、结构型、...[2019/8/28]
设计模式-建造者模式详解 - Vincent-Huang设计模式-建造者模式详解 - Vincent-Huang
一、建造者模式的概念
建造者模式属于创建型设计模式。
指的是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
建造者模式主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这...[2019/8/23]
设计模式-原型模式详解 - Vincent-Huang设计模式-原型模式详解 - Vincent-Huang
一、原型模式的概念
原型模式属于创建型设计模式。当要创建的对象类型由原型实例确定时使用它,该实例被克隆以生成新对象。
此模式用于
1、避免客户端应用程序中的对象创建者的子类,如工厂方法模式。
2、避免以标准方式创建新对象的固有成本(例如,使用''new''...[2019/8/21]
java设计模式----工厂模式
简单工厂模式
简单工厂模式不是 23 种里的一种,简而言之,就是有一个专门生产某个产品的类。
比如下图中的鼠标工厂,专业生产鼠标,给参数 0,生产戴尔鼠标,给参数 1,生产惠普鼠标。
工厂模式
工厂模式也就是鼠标工厂是个父类,有生产鼠标这个接口。
戴尔鼠标工厂,惠普...[2019/8/19]
从IDEA角度来看懂UML图
前言
我们目前已经学习了设计模式的7种设计原则。下面本该是直接进入具体的设计模式系列文章。
但是呢在我们学习设计模式之前我们还是有必要了解一下uml图。因为后续的设计模式文章不出意外应该会很多地方使用到uml图。如果你连uml图都看不懂的话,那么学习起来肯定会有一定的难度。
所以说,...[2019/8/19]
大话设计模式笔记(十七)の迭代器模式
迭代器模式
定义
提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
什么时候用?
当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑用迭代器模式。
你需要对聚集有多种方式遍历时,可以考虑用迭代器模式。
UML图
模板代码
Agg...[2019/8/19]
大话设计模式笔记(十八)の单例模式
单例模式
定义
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以创建,并且它可以提供一个访问该实例的方法。
UML图
...[2019/8/19]
设计模式-单例模式详解 - Vincent-Huang
一、引言
单例模式应该算是23种设计模式中比较简单的,它属于创建型的设计模式,关注对象的创建。
二、概念
单例模式是23个“Gang Of Four”的设计模式之一,它描述了如何解决重复出现的设计问题,以设计灵活且可复用的面向对象软件,使对象的...[2019/8/19]
设计模式总结
原文链接:http: www.cnblogs.com/ChengzhiYang/p/11360106.html[2019/8/16]
创建模式 -- 建造者模式
一、小案例分析
1、功能需求:
现需要建房子,建房流程:挖地基、砌墙、封顶。对于不同种类的房子(高楼,别墅),流程虽然一样,但是具体功能实现不同。如何实现建房子?
2、小菜鸡的答案:
(1)定义一个抽象接口,并定义三个抽象方法(挖地基、砌墙、封顶)。(2)对于不同种类的房子...[2019/8/16]
设计模式之命令模式
让我们从一个简单的项目(遥控器)了解命令模式,然后再给出他的定义:
此项目地址:
https: github.com/Stray-Kite/Design-Pattern/tree/master rc/headfi...[2019/8/15]
创建型模式————原型模式(2.3)
什么是原型模式?
简单来说,通过复制的方式创建对象。(被复制的对象可以理解为模板)
原型模式的应用场景
复杂结构对象的创建。
复杂结构对象:可以理解为对象里面还有对象。
【举个栗子】:点外卖的收货地址
收货地址包括姓名,电话和住址。第一次点外卖的时候需要完整的填写这些信息...[2019/8/15]
设计模式的七大原则(5) --开闭原则
前言
我们已经学习了单一职责原则,依赖倒置原则,接口隔离原则,李氏替换原则。可以说前面几个原则都是为了开闭原则奠定基础。
我们写的程序由于实际的情况可以一定程度上违背各种设计原则。但是,开闭原则我认为作为一个程序猿无论什么时候都需要遵循他,切记不可违背她。
基本介绍
开闭原则(Open Clo...[2019/8/15]
创建型模式————建造者模式(2.4)
什么是建造者模式?
工厂模式聚焦于创建出一个对象,而建造者除此之外还需要为创建的对象赋值。
简单来说,建造者模式=创建对象+属性赋值。
建造者模式应用场景
建造者模式适合创建类中包含多个参数且需要定制化的情况。
简单来说,建造者模式的目的就是创造一条龙服务:不仅创建出对象,顺便给属性赋...[2019/8/15]
设计模式的七大原则(6) --迪米特法则
前言
迪米特法则,听名字有点奇怪,但是这个法则真的非常非常有意思,在我看来,这个法则其实描述的就是一个矜持的小姑娘,害羞的惹人怜爱。但是啊,姑娘虽好,切不可"贪杯"哦~
基本介绍
一个对象应该对其他对象保持最少的了解。
类与类关系越密切,耦合度越大
一个类对自己依赖的类知道的...[2019/8/15]
设计模式的七大原则(7) --合成复用原则设计模式的七大原则(7) --合成复用原则
前言
我们终于学习最后一个设计原则了,其实博主更新的还是挺慢的,因为我想一个一个吃透以后再继续学习,切记不要囫囵吞枣。
基本介绍
其实这个能说的内容很少,就是:尽量使用合成/聚合的方式,而不是使用继承
为什么要这样做?有一下两点原因:
通过继承来进行复用的主要问题在于继承复用会破坏系统的封装...[2019/8/15]
创建型模式总结(2.x)
顾名思义,创建型模式的聚焦点在如何创建对象能够将对象的创建与使用最大化的分离从而降低系统的耦合度。
创建型模式可分为:
单例模式:一个类只能有一个实例对象
工厂模式:
简单工厂模式:聚焦单个产品种类的创建(客户端无法扩展)
工厂方法模式:聚焦单个产品种类的创建(客户端可自扩展具体的产品...[2019/8/15]
结构型模式————装饰器模式(3.1)
什么是装饰器模式?
【先吃三颗栗子:】
1.PC=主机+显示器+键盘+鼠标+鼠标垫
主机是核心,而其他的组成部分都是装饰。
2.手抓饼=饼+鸡蛋+培根+黄瓜
饼是核心,鸡蛋,培根是可选的,可以理解为装饰。
3.咖啡=咖啡+牛奶+冰+方糖
咖啡是核心,牛奶等可选。...[2019/8/15]
创建型设计模式 -- 原型模式创建型设计模式 -- 原型模式
一、小案例分析
1、功能需求:
现有一个员工,姓名为Rick,年龄22,ID为193211,如何创建10个完全相同的对象。
2、小菜鸡的答案:
(1)直接new 10个对象就完了。(2)代码实现:
package prototype.pattern;
public cl...[2019/8/15]
设计模式之工厂模式(下篇)
今天我们来讲一讲抽象工厂:
重要涉及原则:要依赖抽象,不要依赖具体。
首先我们需要了解一个设计原则——依赖倒置原则:减少对具体的依赖,所谓的倒置是倒置的
&...[2019/8/12]
设计模式入门笔记(1.1)
什么是设计模式?
【From 百度百科】
设计模式是一种用于代码设计的经验总结。
设计模式的目的?为什么使用设计模式?
HelloWorld是不需要使用设计模式的,设计模式的主要应用场景是在大型应用的构建上,假想一下,在2万行代码中增加功能,如果程序可读性差,代码将难以扩展和...[2019/8/12]
设计模式之单件模式
今天我们来看一下单件模式,这个模式是所有模式中类图最简单的哦!
为什么用单件模式:
有些对象我们只需要一个,比如:连接池、缓存、对话框、和注册表对象、日志对
&nbs...[2019/8/12]
设计模式七大原则(1.2)
什么是设计模式原则?
设计模式原则是设计设计模式的原则,也就是设计模式应当如何设计所遵守的原则;换句话说,设计模式的设计是基于设计模式原则的。
设计模式的七大原则
单一职责原则
接口隔离原则
依赖倒置原则
里氏替换原则
开闭原则
迪米特原则
合成复用原则
设计原则核心思想
设计...[2019/8/12]
大话设计模式笔记(十五)の备忘录模式
举个栗子
问题描述
打游戏存进度。
简单实现
GameRole
/**
* 游戏角色
* Created by callmeDevil on 2019/8/11.
*/
public cla GameRole {
生命力
private int vit;
...[2019/8/12]