设计模式之前言设计模式之前言
1. 模式
在一定环境中解决某一问题的方案,包括三个基本元素:问题、解决方案和环境。
2. 设计模式
(1)设计模式是一套反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解,保证代码可靠性。毫无疑问,设计模式于系统是...[2019/7/22]
面向对象的六大原则之 接口隔离原则——ISP
ISP = Interface Segregation Principle
ISP的定义如下:
1、客户端不应该依赖他不需要的接口
2、一个类对另外一个类的依赖性应该是建立在最小的接口上
3、不应当将不同的接口合并在一起,形成一个臃肿的大接口,这是对接口的污染
4、使用多个...[2019/7/22]
深入浅出《设计模式》之外观模式(C++)
前言
模式介绍
外观模式相比较之下比较简单,模式设计中定义是为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口是的这一子系统更加容易使用。
如果不理解呢,简单些说就是外观模式提供了为内部提供了同意的接口层,解耦了子系统和客户端,这样客户端只需要知道外观类存在即可,不需要知...[2019/7/19]
深入浅出《设计模式》之简单工厂模式(C++)
前言
模式介绍
简单工厂模式其实并不属于GoF23(23种设计模式),更类似工厂模式的一种变型。其定义是可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
这就有点像去饭馆吃饭,进了门和服务员说一句:“waiter!来一份海参炒...[2019/7/19]
深入浅出《设计模式》之工厂模式(C++)深入浅出《设计模式》之工厂模式(C++)
前言
模式介绍
在之前简单工厂模式中,我们介绍了简单工厂模式的缺陷是违背了开放-封闭原则。如果在面馆中添加了烤海参,那将会修改waiter工厂类。违背了类内封闭原则。
还以面馆为例,现在两种面,用一个服务员来卖就可以,如果这个服务员不干了,后面卖面的厨师需要兼职顶替服务员,但是厨师又不能离开灶台...[2019/7/19]
抖音批量,批量运营抖音_不要迷恋我_【单月抖音变现7000万】教程
接着学习设计模式系列,今天讲解的是代理模式。
定义
什么是代理模式?
代理模式,也叫委托模式,其定义是给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。它包含了三个角色:
Subject:抽象主题角色。可以是抽象类也可以是接口,是一个最普通的业务类型定义。
RealSubjec...[2019/7/16]
软件架构设计的七大原则软件架构设计的七大原则
一、开闭原则(是面向对象开发中最基础的原则,它指导建立更加稳定灵活的系统)
开闭原则是对扩展和修改行为的一个原则,指的是软件中的函数、类、模块应该对扩展开放,对修改关闭。强调的是用抽象构建框架,用实现扩展细节。常用于解决的问题如:更新版本时,尽量在不修改源代码,但增加新功能。
二、依赖...[2019/7/16]
大话设计模式笔记(七)の原型模式
举个栗子
问题描述
要求有一个简历类,必须要有姓名,可以设置性别和年龄,可以设置工作经历,最终需要三份简历。
简单实现
简历类
/**
* 简历类
* Created by callmeDevil on 2019/7/13.
*/
public cla Resume {
...[2019/7/15]
大话设计模式笔记(八)の模板方法模式
举个栗子
问题描述
小时候数学老师的随堂测验,都是在黑板上抄题目,然后再作答案。写一个抄题目的程序。
简单实现
学生甲抄的试卷
/**
* 学生甲抄的试卷
* Created by callmeDevil on 2019/7/14.
*/
public cla TestPaperA {
...[2019/7/15]
策略模式
面向对象:Object Oriented,缩写为OO
—————————————————&...[2019/7/15]
一个最简单的设计模式-模板方法一个最简单的设计模式-模板方法
《Head First设计模式》已经读了不止一遍,但是始终没有进行系统的进行总结。所以近期开始总结设计模式相关的知识,从模板方法模式开始,因为是一个我认为是最简单的设计模式。(推荐视频资源23个设计模式)
提出&解决问题
提出问题
实现制作咖啡功能。且制作咖啡需要四个步骤 :
烧...[2019/7/15]
Python项目中使用配置文件
一些讨论
Python中使用配置文件的最佳实践
Python中使用配置文件的最好方法
Python符号常量
多种配置文件方案对比
我的建议
1. 排除yaml
yaml 不是一个好主意, 因为需要给项目引入额外的依赖。首先排除它,除非是你的个人项目。
2. 方案
2.1 如果你只是需要配置一...[2019/7/12]
模式:工程化实现及扩展——工厂模式
相比较传统的工厂模式IFactory/Concrete Factory会反复引用并编译代码
但是作为开发人员,我们更希望的是少修改代码,尽量从配置着手也就是设计模式的根本原则之一:开放封闭原则。如果我要增加新的产品,那么修改就比较大了,对于业务来讲还是可以接受的。但是如果可以做到不修改代码是最好的...[2019/7/12]
JavaScript 设计模式基础(二)JavaScript 设计模式基础(二)
JavaScript 设计模式基础(一) 小菜鸟的个人博客
原型模式
在以类为中心的面向对象编程语言中,类和对象的关系就像铸模和铸件的关系,对象总是从类中创建。而原型编程中,类不是必须的,对象未必从类中创建而来,可以拷贝另一个对象而变成新对象
从设计模式角度讲,原型模式是用于创建对象的一种模...[2019/7/12]
设计模式:抽象工厂模式,结合类图秒懂!
通过前篇文章《设计模式:工厂模式,解除耦合的利器》的介绍,我们对工厂模式有了深入的了解,今天继续介绍一种特殊的工厂模式,也就是抽象工厂模式。
定义
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式,是工厂方法模...[2019/7/11]
设计模式基础(一)
将自己的学习笔记般过来 https: owen027.github.io/2019/07/08/designPattern
JavaScript是一门面向对象语言[1][2][3],设计模式通过对面向对象的特征封装、继承、组合、多态等技术的反复使用,提炼出可复用的面向对象设计技巧。
原文链接...[2019/7/11]
高校宿舍管理系统详细需求分析说明书
(详细)高校宿舍管理系统需求分析说明书(文末-->获取原文档)
版本状态
版本
作者
参与者
...[2019/7/10]
设计模式:工厂模式,解除耦合的利器
工厂模式是使用频率很高的一种设计模式,在面试中也经常问到,今天我们就来学习它。
为什么要用工厂模式?
解答这个问题前,我们先来了解什么是工厂模式。
工厂模式其实也称创建模式,是用于创建对象的一种方式。本质上就是用工厂方法来代替new实例化对象。
举个例子:我们在编写代码的时候,在一个A类...[2019/7/10]
简单工厂模式
模拟一个简单的需求
设计一个简单的计算器,能够完成加减乘除的操作,并且能够设置运算的两个操作数(暂时不考虑计算器的界面)。
分析
思路1
可以创建一个计算器类,里面包含加减乘除的运算,以及设置获取操作数等操作,客户端直接创建一个计算器的对象,调用对应接口去执行运算。如果...[2019/7/9]
设计模式-工厂模式
关注公众号 JavaStorm 获取更多精彩
工厂模式定义
工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处...[2019/7/8]
多个源文件共享同个变量的方法
extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找 其定义。 另外,extern也可用来进行链接指定。 用法分析: 在一个变量前加extern 比如:extern unsigned i...[2019/7/8]
多态重构条件语句多态重构条件语句
首先,在C#中,多态的体现是什么?虚函数、抽象方法、接口。废话不多说,直接上代码:
#region 多态重构switch...case....
public abstract cla ShippingCalculation
{
public abstract ...[2019/7/8]
状态模式重构条件语句状态模式重构条件语句
状态模式重构条件语句
直接上代码:
<summary>
状态模式的环境类
< ummary>
public cla CalculateContext
{
private IShippingAmount _Calculate;
public ...[2019/7/8]
设计模式之单例模式
一、单例模式
1、概念图解
单例设计模式定义:确保这个类只有一个实例,并且自动的实例化向系统提供这个对象。
2、样例代码
package com.model.test;
public cla Singleton {
使用静态变量记录唯一实例
private static S...[2019/7/8]
大话设计模式笔记(六)の工厂方法模式
栗子回顾
简单工厂模式:
https: www.cnblogs.com/call-me-devil/p/10926633.html
运算类使用工厂方法模式实现
UML图
代码实现
工厂接口
/**
* 工厂接口
* Created by callmeDevil on 2019/7/7.
...[2019/7/8]
Analysis of requirement specification of parking management system
Analysis of requirement specification of parking management system
PURPOSE OF THE SYSTEM
The parking management system refers to the automatic id...[2019/7/8]
报刊订阅管理系统的设计与实现报刊订阅管理系统的设计与实现
课程设计(论文)任务书(文章末尾--源文档下载)
软件 学院 软件工程 专业 2016 -7 班
一、课程设计(论文)题目 综合课程设...[2019/7/8]
两张图示轻松看懂 UML 类图两张图示轻松看懂 UML 类图
一个类如何表示
第一格为类名
第二格为类中字段属性
格式:权限 属性名:类型 [ = 默认值 ]
权限:private、public 、protected、default,它们分别对应 -、+、#、~
第三格为类的方法
格式:权限 方法名称(参数列表) [ : 返回类型]
返回类型可选
...[2019/7/5]
设计模式之策略模式和状态模式(strategy pattern & state pattern)设计模式之策略模式和状态模式(strategy pattern & state pattern)
本文来讲解一下两个结构比较相似的行为设计模式:策略模式和状态模式。两者单独的理解和学习都是比较直观简单的,但是实际使用的时候却并不好实践,算是易学难用的设计模式吧。这也是把两者放在一起介绍的原因,经过对比和实例介绍,相信应该会一些比较深刻的感知。最后在结合个人的体会简单聊一下对这两个模式的一些看法...[2019/7/4]
HeadFirst设计模式(一)策略者模式
最近在看HeadFirst设计模式一书,作为一个半路出家的程序员,感觉很多东西需要学习,学习的路程中有些东西学了当时觉得理解了,但日常工作中没有使用到渐渐的自己就忘记了。----------------------上面就是写者系列的博客的原因,主要是为了巩固知识,忘记在那个博主那边看过这么一句话,...[2019/7/3]
设计模式之装饰器模式(decorator pattern)
装饰器模式主要对现有的类对象进行包裹和封装,以期望在不改变类对象及其类定义的情况下,为对象添加额外功能。是一种对象结构型模式。需要注意的是,该过程是通过调用被包裹之后的对象完成功能添加的,而不是直接修改现有对象的行为,相当于增加了中间层。类似于python中的@装饰器。
下面还是按照老规矩,先来...[2019/6/30]
设计模式之观察者模式(observer pattern)
观察者模式主要用于处理对象间的一对多的关系,是一种对象行为模式。该模式的实际应用场景比较容易确认,当一个对象状态发生变化时,所有该对象的关注者均能收到状态变化通知,以进行相应的处理。本文希望通过简单的介绍和分析,能让读者对观察者模式有一个简单直观的认识和感知,以便在实际开发中根据需要灵活运用。
...[2019/6/29]
大话设计模式笔记(五)の代理模式大话设计模式笔记(五)の代理模式
举个栗子
故事是这样的...
一个小伙子喜欢上了隔壁班的一个妹子,但是又不认识,也害羞不好意思主动去说话,于是拜托了同样在这个班的一个朋友去传递自己想要送的礼物。。。
代码实现
该模式就不上什么简单实现了,直奔完整实现。
被追求者
/**
* 被追求者
* Created by call...[2019/6/29]
设计模式之工厂模式(factory pattern)
工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。本文从一个具体的例子逐步深入分析,来体会三种工厂模式的应用场景和利弊。
1. 简单工厂模式
该模式对...[2019/6/28]
设计模式之适配器模式(adapter pattern)
适配器主要用于接口的转换或者将接口不兼容的类对象组合在一起形成对外统一接口,是一种结构性模式,其本质是是一个中间件,适用于类及其对象。本文希望通过简单的介绍和分析,能让读者对适配器模式有一个简单直观的认识和感知。
1.目的
对现有的类的接口进行转换以符合新的需求。
2.动机
通过转换或...[2019/6/28]
工厂模式
目录
简单工厂
工厂方法
抽象工厂
简单工厂
定义:
提供一个创建对象实例的功能,而无需关心具体的实现。被创建的实例对象可以是接口,抽象类,也可以是具体的类
角色:
工厂(creator)角色
简...[2019/6/28]
设计模式之迭代器与组合模式(四)
因为这系列篇幅较长,所以在这里也不进行任何铺垫,直奔主题去啦。
利用组合设计菜单
我们要如何在菜单上应用组合模式呢?一开始,我们需要创建一个组件接口来作为菜单和菜单项的共同接口,让我们能够用统一的做法来处理菜单和菜单项。换句话说,我们可以针对菜单或菜单项调用相同的方法。
让我们从头来看看如何让...[2019/6/27]
设计模式-模板方法
模板方法
关注公众号 JavaStorm 获取更多精彩。
模板方法模式在一个方法中定义了一个算法骨架,并且 final 修饰防止子类重写。方法中包含一些抽象方法,也就是一些步骤延迟到字类实现。模板方法使得在不改变算法结构的情况下,重新定义算法中的某些步骤。完整代码可以查看GitHub:http...[2019/6/24]
设计模式之迭代器与组合模式(三)
现在我们已经能愉快地看着一页一页罗列出来的菜单进行点菜了。现在又有的小伙伴希望能够加上一份餐后甜点的“子菜单”。怎么办呢?我们不仅仅要支持多个菜单,甚至还要支持菜单中的菜单。
如果我们能让甜点菜单变成餐厅菜单集合的一个元素,那该有多好。但是根据现在的实现,根本做不到呀。我们想要的是这样的:
...[2019/6/24]
大话设计模式笔记(四)の装饰模式
举个栗子
问题描述
可以给人搭配嘻哈服或白领装的程序。
简单实现
代码
/**
* 人类
* Created by callmeDevil on 2019/6/23.
*/
public cla Person {
private String name;
public...[2019/6/24]
设计模式之迭代器与组合模式(二)
在上次的文章中,我们通过层层引导,已经知道了迭代器模式的由来。现在我们再好好总结下。
关于迭代器模式,你所需要知道的第一件事情,就是它依赖于一个名为迭代器的接口。这是一个可能的迭代器的接口:
现在,我们一旦有了这个接口,就可以为各种对象集合实现迭代器:数组、列表、散列表...如果我么想要为...[2019/6/19]
Matlab混入模式(Mixin) - sw-lab
Mixin是一种类,这种类包含了其他类要使用的特性方法,但不必充当其他类的父类。Matlab无疑是支持多继承的。我们可以利用 Matlab 的这种特性,实现一种叫做 Mixin 的类。MixIn的目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个Mix...[2019/6/19]
浅谈游戏开发中常见的设计模式
前言
因为游戏开发在架构上要考虑性能和实际需求,在尽量不引入第三方库、框架的前提下进行开发,所以在编码时候会经常用到设计模式对代码进行复用,对业务逻辑架构解耦,尽量减少hard code。
单例模式(Singleton Pattern)
单例模式经常会用在逻辑上唯一的对象(通常用于重量...[2019/6/19]
Matlab空对象模式 - sw-lab
在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。
AbstractObject.m
cla def Abstra...[2019/6/19]
Matlab访问者模式 - sw-lab
访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构(Element)进行分离,数据结构的类只需要提供对"访问者"开放的接口(...[2019/6/18]
聊聊 Laravel 5.5 的 「自动发现」
ThinkSNS是什么?
ThinkSNS(简称TS),一款全平台综合性社交系统,目前最新版本为ThinkSNS+、ThinkSNS V4 ThinkSNS【简】。
看了Taylor Otwell发表的Package Auto-Discovery In ...[2019/6/18]
通过说明与示例了解js五种设计模式
第一种模式:js工厂模式
var lev=function(){
return "啊打";
};
function Parent(){
var Child = new Object();
Child.name="李小龙";
Child.age="30";
...[2019/6/18]
简说设计模式——迭代器模式
一、什么是迭代器模式
迭代器这个词在Java中出现过,即Java中使用Iterator迭代器对集合进行遍历,但迭代器模式算是一个没落的模式,基本上没人会单独写一个迭代器,除非是产品性质的开发。
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的...[2019/6/17]
设计模式-命令模式(Command)
关注公众号 JavaStorm 获取更多成长。
大约需要6分钟读完。建议收藏后阅读。
命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
GitHub地址: https: github.com...[2019/6/17]