ASP.NET 设计模式:设计模式和原则简述
设计模式的概念
设计模式是高层次的、抽象的解决方案模板。可以将这些模式视为解决方案的蓝本而不是解决方案本身。通常是通过重构自己的代码并将问题泛化来实现设计模式。
软件设计中常见的模式大体分为三类:
- 创建型模式:处理对象构造和引用
- 结构型模式:处理对象之间的关系以及它们之间如何进行交互以形成更大的复杂对象。
- 行为型模式:处理对象之间的通信,特别是职责和算法方面。
各模式简介:
模式对于软件设计和开发而言至关重要,通过共享的词汇来表达思想。具备设计模式牢固知识的团队,沟通起来更有效、顺畅,而不必拘泥于底层实现的细节。
设计模式的使用价值在于它们是可靠的、经过验证的解决方案。设计模式的宗旨就是重用解决方案,避免一次又一次的做重复的工作。
但是设计模式并非银弹,即不是所有的问题都需要或可以用设计模式来解决。这是一把双刃剑,用得好可以把复杂的问题简单化,用不好简单的问题也会被复杂化,所以重点是对于要解决的问题的思考,将问题泛化(形成一种解决问题的套路),而不是拿着设计模式硬往代码上套。
设计原则
设计原则是设计模式的基础,遵循经过验证的设计原则,自己的代码会更加灵活、更具有适应性和可维护性。以下为常见的设计原则
- 简约原则(KISS):该原则的目标就是让代码保持简洁但不要过于简陋,避免引入任何不必要的复杂度。
- 不要重复自己(DRY):将公用的部分抽离出来放在一个单独的地方,避免在系统中重复出现。这个原则不仅仅书的是代码,还包括系统中重复的任何逻辑。
- 讲述而不要询问(Tell,Don't Ask):应该告诉对象您希望他们执行什么动作,而不是询问有关该对象状态的问题然后由您决定希望执行什么动作。这个原则有助于匹配职责并避免类之间的耦合。
- 您不需要它(YAGNI):指的是只需要将应用程序必须的功能包含进来,而不要试图添加任何您觉得可能需要的功能。
- 分离关注点(SoC):将软件分解为多项不同的功能,每项功能封装了可供其他类使用的唯一行为和数据。将程序划分成若干独立职责的做法显著提高了代码的重用程度、维护性和可测试性。
S.O.L.I.D设计原则
S.O.L.I.D设计原则是一组针对面向对象设计的最佳实践。
- 单一职责原则(SRP):该原则与SoC原则很相似,要求每个类有且只有发生变化的原因。
- 开放封闭原则(OCP):要求类对于扩展应该是开放的,对于修改应该是封闭的,这样可以在不改变类的内部行为的情况下添加新功能并扩展类。
- 里氏替换原则(LSP):子类必须可替代它的基类。
- 接口分离原则(ISP):使用相同接口的类只需要实现特定的一组方法,而不是实现一个大而全的单体方法接口。
- 依赖倒置原则(DIP):将自己编写的类与具体的实现隔离开来,让这些类依赖于抽象或接口,即面向接口编程。降低代码的耦合度,提高系统灵活性。
- 依赖注入(DI)和控制反转(IoC)原则:与DIP紧密相关的是DI原则和IoC原则。DI通过构造器、方法和属性来提供底层类或从属类。配合使用DI原则,这些从属类可以被反转为接口或者抽象类,从而达到代码松耦合的效果。在IoC原则中,系统的控制流与过程式编程方法相比是反转的。通过IoC容器将服务注入到客户端代码,而不必让客户端代码指定具体的实现。所谓控制反转指的是客户端获取服务的行为。
《ASP.NET 设计模式》
ASP.NET 设计模式:设计模式和原则简述的更多相关文章
- 设计模式之六大原则——接口隔离原则(ISP)
设计模式之六大原则——接口隔离原则(ISP) 转载于:http://www.cnblogs.com/muzongyan/archive/2010/08/04/1792528.html 接口隔离原则 ...
- GOF业务场景的设计模式-----设计模式六大原则
单一职责原则(Single Responsibility Principle) 定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 问题由来:类T负责两个不同的职责:职责P1, ...
- 设计模式——依赖倒置原则实例(PHP实现)
<?php /** * 设计模式--依赖倒置原则实例 * Created by DannyWang * jue.wang@yulore.com * 2015-05-05 */ abstract ...
- Java 设计模式(二)-六大原则
Java 设计模式(二)-六大原则 单一职责原则(Single Responsibility Principle) 定义: 不要存在多余一个原因导致类变更,既一个类只负责一项职责. 问题由来: 当类A ...
- [.net 面向对象程序设计深入](13)实战设计模式——设计模式使用场景及原则
[.net 面向对象程序设计深入](13)实战设计模式——设计模式使用场景及原则 1,什么是设计模式? 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计 ...
- C++ 设计模式 依赖倒置原则 简单示例
C++ 设计模式 依赖倒置原则 简单示例 /** * 依赖倒置原则(Dependency Inversion Principle) * 依赖于抽象(接口),不要依赖具体的实现(类),也就是针对接口编程 ...
- C++ 设计模式 开放封闭原则 简单示例
C++ 设计模式 开放封闭原则 简单示例 开放封闭原则(Open Closed Principle)描述 符合开放封闭原则的模块都有两个主要特性: 1. 它们 "面向扩展开放(Open Fo ...
- C#之设计模式之六大原则(转载)
设计模式之六大原则(转载) 关于设计模式的六大设计原则的资料网上很多,但是很多地方解释地都太过于笼统化,我也找了很多资料来看,发现CSDN上有几篇关于设计模式的六大原则讲述的比较通俗易懂,因此转载过来 ...
- [.net 面向对象程序设计深入](18)实战设计模式——设计模式使用场景及原则
[.net 面向对象程序设计深入](18)实战设计模式——设计模式使用场景及原则 1,什么是设计模式? 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计 ...
- 实践GoF的23种设计模式:SOLID原则(上)
摘要:本文以我们日常开发中经常碰到的一些技术/问题/场景作为切入点,示范如何运用设计模式来完成相关的实现. 本文分享自华为云社区<实践GoF的23种设计模式:SOLID原则(上)>,作者: ...
随机推荐
- Java学习之道:Java操作Excel之导出下载
页面放置一个button进行点击导出事件 <h:commandLink target="_parent" value="导出" ac ...
- REST设计规则
1.简介 REST(Representational State Transfer), 表述性状态转移是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格. REST只是一 ...
- Java加密与解密笔记(四) 高级应用
术语列表: CA:证书颁发认证机构(Certificate Authority) PEM:隐私增强邮件(Privacy Enhanced Mail),是OpenSSL使用的一种密钥文件. PKI:公钥 ...
- 基于python的web应用开发-添加关注者
社交web允许用户之间相互联系. 例如: 关注者.好友.联系人.联络人或伙伴. 记录两个用户之间的定向联系,在数据库查询中也要使用这种联系. 一.论数据库关系 一对多关系 数据库使用关系建立记录之间的 ...
- [UWP]了解模板化控件(7):支持Command
以我的经验来说,要让TemplatedControl支持Command的需求不会很多,大部分情况用附加属性解决这个需求会更便利些,譬如UWPCommunityToolkit的HyperlinkExte ...
- Mybatis(基于SqlSessionTemplate的实现) + Spring 练习实战
mybatis学习篇:上次使用映射接口实现Mybatis,有不方便指出就是需要接口,且需要保证接口上不能存在其他的代理.这次通过SqlSessionTemplate基于模板类实现Mybatis,总的来 ...
- 解决jquery.zclip.js插件无法复制的问题
网页中需要用到点击复制,在使用webpack加载jquery以及jquery.zclip.js后,出现了以下情况: jquery顺利加载 zclip插件顺利加载 ZeroClipboard.swf顺利 ...
- 【java】内存流:java.io.ByteArrayInputStream、java.io.ByteArrayOutputStream、java.io.CharArrayReader、java.io.CharArrayWriter
package 内存流; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java. ...
- Spring事务管理总结
本文是对慕课网上"搞定SSM开发"路径的系列课程的总结,详细的项目文档和课程总结放在github上了.点击查看 本文对应慕课网上课程Spring事务管理,详情可查看:点我 1: 概 ...
- Java之线程安全中的三种同步方式
一个程序在运行起来时,会转换为进程,通常含有多个线程. 通常情况下,一个进程中的比较耗时的操作(如长循环.文件上传下载.网络资源获取等),往往会采用多线程来解决. 比如,现实生活中,银行取钱问题.火车 ...