惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - CHPowerljp

在 VS2022 中关闭“包提醒”(通常指 NuGet 包更新提示、推荐包提示等) Windows 11 安装或重置过程中,跳过微软邮箱登录 本地HTTPS证书免费 使用本地私有IP而不是域名作为站点,IIS部署站点 C#客户端WPF/Winform调用WebService服务引用,对操作 “xxx” 的回复消息正文进行反序列化时出错【解决方案】 无密码远程桌面连接方法 SQLServer高并发 SQLlite数据库教程 IIS设置高并发 C# 连接Mysql读写 Linux安装php、mysql、apache服务 安装后phpmyadmin访问被拒绝的解决方案 XAMPP安装教程 Python开发环境搭建 .NET面试题大全(C#面试题)2020更新 javascript函数传递字符串参数 .NET HTTP异步请求(适用于并发请求同时大于上千上万个) Linux安装Docker IIS部署.NET Core方法及常见的需要注意的坑 Navicat连接mysql提示1251解决方案 js获取select下拉框选中的值 Windows下安装Mysql数据库
.NET之设计模式总结完整版
CHPowerljp · 2020-05-07 · via 博客园 - CHPowerljp

软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。(引用自百度百科)

 设计模式是软件设计思想的体现。

一、设计模式有以下原则:

1.单一职责原则(Single Responsibility Principle):

就一个类而言,应该仅有一个引起它变化的原因。

做编程的时候,如果讲每一个类加上各种各样的功能就意味着,无论任何需求要来,你都需要更改这个类,这样会让维护非常麻烦,复用不可能,也缺乏灵活性。如果一个类承担的职责过多,就等于把这些职责耦合起来,一个职责变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭到很多意想不到的破坏。(引用自百度百科)

2.里氏代换原则,也叫里氏替换原则(Liskov Substitution Principle):

里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范 (引用自百度百科)

3.依赖倒转原则(Dependence Inversion Principle):

这个是开闭原则的基础,具体内容:面向接口编程,依赖于抽象而不依赖于具体。写代码时用到具体类时,不与具体类交互,而与具体类的上层接口交互。

4.接口隔离原则(Interface Segregation Principle):

每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。

使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。

5.迪米特法则,又称最少知识原则(Demeter Principle):

一个软件实体应当尽可能的少与其他实体发生相互作用

6.合成复用原则

少用继承,多用合成关系来实现;尽量首先使用合成/聚合的方式,而不是使用继承。

7.开闭原则(Open Close Principle):

原文是:"Software entities should be open for extension,but closed for modification"。就是说模块应对扩展开放,而对修改关闭

二、设计模式场景有以下23种:

1.创建型

共5种:Factory Method(工厂方法模式)、Abstract Factory(抽象工厂模式)、Builder(建造者模式)、Prototype(原型模式)、Singleton(单例模式)

2.结构型

共七种:Adapter(适配器模式)、Decorator(装饰者模式)、Proxy(代理模式)、Façade(外观模式)、Bridge(桥接模式)、Composite(组合模式)、Flyweight(享元模式)

3.行为型

共十一种:Interpreter(解释器模式)、Template Method(模版方法模式)、Chain of Responsibility(职责链模式)、Command(命令模式)、Iterator(迭代器模式)、Mediator(中介者模式)、Memento(备忘录模式)、Memento(备忘录模式)、Observer(观察者模式)、State(状体模式)、Strategy(策略模式)、Visitor(访问者模式)

参考:

https://blog.csdn.net/mq2553299/article/details/80962335

https://www.cnblogs.com/geek6/p/3951677.html