[置顶]python知识导航贴,持续更新

[置顶]C# 语言高级特性知识导航贴,持续更新

[置顶]netMarketing类库: 类库说明

[置顶]本站视觉相关教程整理贴子,持续更新

[置顶]C++相关导航贴,持续更新

[置顶]本站收费服务公告(netMarketing源码,工业自动化行业培训班等)

[置顶]2020年勇哥的机器视觉实验项目清单(大纲)

[置顶]本站连载贴子系列,持续更新中……

[置顶]勇哥的免费视频教程清单

[置顶]勇哥在B站发布的视频清单

[置顶]运动控制专题,持续更新

享元模式(Flyweight Pattern)

享元模式(Flyweight Pattern)是一种结构型设计模式,用于在系统中共享大量相似对象,以减少内存占用和提高性能。享元模式通过共享相同或相似的对象,避免了创建过多的对象实例,从而降低了系统的开销。以下是一个使用C#语言实现的享元模式的示例:假设我们有一个图形绘制系统,需要绘制大量的圆形对象。每个圆形对象具有相同的属性和行为,只是位置和大小不同。为了优化性能和减少内存占用,我们可以使用享元...

外观模式(Facade Pattern)

外观模式(Facade Pattern)是一种结构型设计模式,它隐藏了系统的复杂性,并向客户端提供了一个简单的接口。外观模式将客户端与系统的内部复杂性隔离,使得客户端只需要与外观对象进行交互,而无需了解系统内部的具体细节。以下是一个使用C#语言实现的外观模式的示例:假设我们有一个复杂的音响系统,包括调音台、CD播放器、收音机等组件。每个组件都有自己的接口和操作方法。对于客户端来说,直接使用这些组件...

装饰者模式

装饰者模式是一种设计模式,用于动态地给一个对象添加一些额外的职责或行为。它允许你在不改变对象自身的基础上,增强其功能。装饰者模式通常用于实现与原有对象具有相同接口的新对象,并在新对象中添加额外的功能。举个例子,假设我们有一个简单的文本处理程序,可以对文本进行加粗、斜体等操作。我们可以使用装饰者模式来动态地为这些操作添加额外的功能,比如记录日志或统计字符数。下面是一个使用C#实现装饰者模式的例子:u...

组合模式

组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式, 它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系, 使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。组合模式一般用来描述整体与部分的关系,它将对象组织到树形结构中,顶层的节点被称为根节点,根节点下面可以包含树枝节点和叶子节点,树枝节点下面又可以包含树枝...

桥接模式

类图:桥梁模式所涉及的角色有:抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。修正抽象化(RefinedAbstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。实现化(Implementor)角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以非常不一样。实现...

适配器模式

作者:清泓y链接:https://www.zhihu.com/question/573785160/answer/3111113516来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。这个适配器模式,正如字面意思,就是要去适配某一件物品。 假如你正在开发一款股票市场监测程序, 它会从不同来源下载 XML 格式的股票数据, 然后向用户呈现出美观的图表。开发过程...

本站设计模式贴子汇总

在软件工程领域,设计模式是一套通用的可复用的解决方案,用来解决在软件设计过程中产生的通用问题。它不是一个可以直接转换成源代码的设计,只是一套在软件系统设计过程中程序员应该遵循的最佳实践准则。从定义可以看出,设计模式是一套语言无关的最佳设计实践准则,而不是什么真理定理,本文主要罗列GOF的面向对象的23种设计模式。分类设计模式按照其要解决的问题被分为3类:创建型(creational)顾名思义,主要...

勇哥谈谈策略模式(Strategy Pattern)

勇哥注:策略模式和状态模式是两个亲兄弟,类图很像。策略模式是封装了一系列算法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同。就像是同样是亿万富豪,马云是靠卖东西,王思聪是靠继承。状态模式的每种状态做的事,可以完全不同。按类图编写的代码:using System; using System.Collections.Generic; using System.Linq; usin...

勇哥谈谈状态模式(State Pattern)

勇哥注:状态模式(State Pattern)最简单的理解就可以用来消灭那种很长的if else,或者case。官方说法是:当一个对象内在状态改变时允许改变其行为,这个对象看起来像是改变了其类红绿灯就很像是一个状态模式,红灯之后是绿灯,绿灯之后是黄灯,黄灯之后是红灯,这就很符合状态模式的一个逻辑。引用《大话设计模式》的说法:状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂的情况。...

在类图中,分不清楚关联和依赖

勇哥注:在类图中,最难区分的关系是依赖和关联,在网上一些文章中,这两种关系往往乱画。勇哥自己也容易搞混淆它们,所以在这里写个总结贴子。在UML类图中,依赖(Dependency)和关联(Association)是两个重要的关系概念。它们描述了类与类之间的不同连接方式。让我们来详细讲解一下它们的含义以及在C#代码上的区别。1。依赖(Dependency)依赖是一种较弱的关系,它表示一个类使用另一个类...

抽象工厂模式与工厂模式的区别

作者:鹅厂程序小哥链接:https://zhuanlan.zhihu.com/p/346510457来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。抽象工厂模式(Abstract Factory Pattern)【使用频率:★★★★★】1. 概述封装出一个接口,这个接口负责创建一系列互相关联的对象,但用户在使用接口时不需要指定对象所在的具体的类。  抽象工厂模式为一个...

一个例子演示三种类工厂模式

先来段起始源码:需求是: 使用SQLServer数据库,对表User进行Insert和GetUser两个操作using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplic...

简单工厂、工厂模式的区别

文心一言的介绍能说明问题,引用如下:简单工厂模式和工厂方法模式的主要区别如下: 结构上的区别: 在简单工厂模式中,通常只有一个工厂类来负责所有产品的创建。 而在工厂方法模式中,有一个抽象的工厂接口或抽象类, 多个具体的工厂类继承或实现这个接口或抽象类,每个具体的工厂类负责创建一种产品。 对扩展的支持: 简单工厂模式在增加新产品时需要修改工厂类的代码,这违反了开闭原则。 而工厂...

一个duck类的小例子,开闭原则的应用

勇哥注:此贴为转载,转载地址不详,对作者抱歉。此贴尾,勇哥写了带有C#代码的读书笔记。面向对象设计原则之开闭原则 开闭原则的定义是:软件实体应当对扩展开放,对修改关闭。我们通过例子来了解这个设计原则: 假如现在我们有一个Duck超类,它有嘎嘎叫、戏水、外观等方法。当有外观颜色不同的鸭子时,都可以继承Duck类,然后再覆盖继承得到的外观方法即可。这样就实现了代码复用。现在有个新的需求,要求让所有的鸭...

售货机项目--应用控制反转的实战

勇哥注:此为转贴,载于:https://zhuanlan.zhihu.com/p/133872816 这个某位软件经理的项目实践,放这里让诸君共勉。控制反转和依赖反转是软件框架里面常见的设计方法,说起来容易,但使用起来很难,其根本原因在于场景的难识别。本文根据实际项目中的落地经验来谈一谈控制反转和依赖反转的相关技术。重构背景去年10月上旬,公司正式立项智能售货机(地铁站卖水的自助售卖机)项目,我被...

用一句话白话一下7大设计原则

在面向对象编程中,SOLID 是五个设计原则的首字母缩写,旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师罗伯特·C·马丁(Robert Cecil Martin)提出的许多原则的子集,在他2000年的论文《设计原则与设计模式》中首次提出。SOLID 原则包含:S:单一职责原则(single-responsibility principle)一个类或者模块只负责完成一个职责...

聊聊开放封闭原则 (Open/Closed Principle)

勇哥注:此文章为引用。勇哥在这里只是编写了C#的演示代码,供大家玩读。最近技术组同事分享了关于 JavaScript 时间循环和任务队列的机制,涉及了异步编程方面的内容,包括定时器、Promise、async/await,于是打算借机会巩固一下这部分知识。随手翻了几篇文章,其中一篇在说到异步编程中回调函数时,提到了 IoC(控制反转)、DI(依赖注入)等设计思想,干脆,把这几个名词弄清楚,于是顺藤...

台湾红烧牛肉面

勇哥注:如此美食,值得记录一下。^_^牛骨高汤准备牛大骨800克加入清水,浸泡至少半个小时,泡出血水。中途最好换一次水,效果更佳。接下来准备熬汤头所需要的食材。胡萝卜80克;生姜段60;白洋葱80克;西芹段60克;大葱段60克;准备香料白胡椒粒6克;白豆蔻2克;白芷1.5克。洗干净把泡好的牛骨放至炖锅。加入5倍的清水,即4000毫升水。加入上面的蔬菜和香料。大火加盖把水煮开,打开盖子,这样煮15分...

开闭原则,来自生活与编程等各方面的例子

勇哥注:这节勇哥拿开闭原则,发散思考一下。。。。先提一下面向对向编程中开闭原则的概念:软件实体(类、模块、函数等)应该可以扩展,但是不可以修改。弹性工作时间制度在弹性工作时间制度中,规定每天工作8小时是“关闭”的,即这个规定是不变的。 但是,员工什么时候开始工作,什么时候结束工作则是“开放”的, 可以根据实际情况进行调整。 例如在勇哥的公司,项目经理的打卡就是弹性的,一个月不限补卡次数。...

勇哥谈下迪米特法则

勇哥注:迪米特法则是1987年秋天由lan holland在美国东北大学一个叫做迪米特的项目设计提出的, 它要求一个对象应该对其他对象有最少的了解,所以迪米特法则又叫做最少知识原则迪米特法则包含前后两个部分,如果我们把一个模块看作是一个人,那么要实现“一个人应该对其他人有最少的了解”,应该做到这两点:1、只和直接的朋友交流;2、减少对朋友的了解。接下来就详细说说如何做到这两点。首先,我们来看一下...

log4net教程(一)基本应用

勇哥注:log4net通过配置文件,可以有自己的缓存机制,并且可以设置成支持多线程输出。另外还有日志级别和日志轮换功能。输出媒介可以指定文件、数据库等。文件类型可以为ini, log等。在开发软件时,建议还是不要再使用File.Write自己来写磁盘记录log,这样多线程写log时磁盘效率会很感人,并且维护也复杂,还是全部交给开源的log4net吧。下面是配置文件:<?xml version...

控制反转思想,来自生活与编程等各方面的例子

勇哥注:控制反转思想,无论是编程还是生活中,都会有大量的应用。发散思考一下其乐无穷。。。。先提一下几个专业名词:依赖倒置原则(DIP):一种软件架构设计的原则,是一种抽象概念。 (DIP缩写是指 Dependency inversion principle)控制反转(IoC):一种设计模式,是DIP的具体实现方式。(IoC缩写是指 inversion of control)依赖注入(...

控制反转容器&依赖注入模式的阅读笔记

勇哥注:主要是阅读时的代码由java转为C#。(一)简单示例using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication7...

控制反转容器&依赖注入模式

控制反转容器&依赖注入模式Inversion of Control Containers and the Dependency Injection pattern作者:Martin Fowler翻译:坚强2002&源文档 http://www.martinfowler.com/articles/injection.html 轻量级容器在Java社区近来可是风起云涌,这些容器能将来自...

载自知乎一篇非常好的介绍依赖倒置原则的文章

勇哥注:本文为引用,但是勇哥穿插编写了C# 版的演示代码。作者:Mingqi链接:https://www.zhihu.com/question/23277575/answer/169698662要了解控制反转( Inversion of Control ), 我觉得有必要先了解软件设计的一个重要思想:依赖倒置原则(Dependency Inversion Principle )。什么是依赖倒置原则...

问题:Spring IoC有什么好处呢?(知乎贴子文摘)

知乎问题:Spring IoC有什么好处呢?比如这个例子: B{ A a=new Aimpl(); //其他代码 } B{ A a; //其他代码 public void setA(A a) { this.a = a; } } 第一个是直接合成使用A 第二个是用控制反转进行管理 书上只讲理论,我现在都不能体会Spring的IoC和不用相比有什么好处,能具体说...

七大设计原则(2)依赖倒置原则

勇哥注:此文转载自 https://zhuanlan.zhihu.com/p/466223262 勇哥只是把代码转成了C#。控制反转(IoC)是什么?「反转」到底反转了什么?Spring和IOC之间是什么关系?依赖注入(DI)和依赖倒置原则(DIP)又是什么?IOC、DI和DIP有什么关系?1. 控制反转(IoC)1.1 一个典型案例介绍「控制反转」之前,我们先看一段代码 public cl...

依赖倒置(反转)(DIP),控制反转(IoC),依赖注入(DI),IoC容器

勇哥注:面向对象设计(OOD)有助于我们开发出高性能、易扩展、易利用的程序。其中,OOD有一个重要的思想就是依赖倒置原则(DIP),并由此引申出IoC、DI及IoC容器等概念。现在初步了解 一下这些概念:依赖倒置原则(DIP):一种软件架构设计的原则,是一种抽象概念。 (DIP缩写是指 Dependency inversion principle)控制反转(IoC):一种设计模式,是DIP的具体...

依赖注入 和 new 一个实例有什么区别吗?

勇哥注:这是知乎里一个人的困惑,答者回复非常好,特摘抄如下。问题: 今天刚看了一下 依赖注入 的概念,大致就是说如果一个服务类 A 需要另外一个服务类 B 中的方法, 那就直接将这个 B 这个类注入到 A 这个类中,但是我一想,这不就是在 A 类中 new 一个 B 类吗?? 或者可以直接在 A 类的构造器中 new 一个 B 类,然后 A 类中的所有方法都可以使用这个属性。 依赖注入和这...

设计模式-02.经典设计原则-第一节-单一职责原则,开闭原则,里式替换,接口隔离

文章目录设计模式经典设计原则-第一节单一职责原则(SRP)如何理解单一职责原则?如何判断类的职责是否足够单一?类的职责是否设计得越单一越好?开闭原则(OCP)如何理解“对扩展开放、修改关闭”?修改代码就意味着违背开闭原则吗?如何做到“对扩展开放、修改关闭”?如何在项目中灵活应用开闭原则?里式替换原则(LSP)如何理解“里式替换原则”?哪些代码明显违背了 LSP?接口隔离原则(ISP)如何理解“接口...
会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864