当前位置: 首页 > news >正文

c# 设计模式

1、定义设计模式

我们总是在谈论做各种事情的方法:工作、爱好和家庭生活等各个方面,而且在不断地重复一些模式。

  .发粘的小圆面包与晚餐上的小圆面包看起来很像,但我在上面加了红糖和坚果。

  .她门前的花园和我的很像,但我在花园里种了玫瑰。

  .这张茶几和那张样式上很像,但这张茶几用门代替了抽屉。

在程序设计中也会有同样的事情:告诉一个同事我们怎样完成了一个包含相当多技巧的程序,这样他就不用从头开始再做一次。通过维持对象的独立性,我们找到了对象通信的有效方式。

2、学习过程

我们发现,不管使用哪种语言,学习设计模式都需要三个阶段。

  1.接受。

  2.认可。

  3.领会。

首先,你要接受设计模式对自己的工作很重要这一前提;接下来,会认识到需要学习设计模式,这样才能知道什么时候需要使用设计模式;最后,要充分笑话有关模式的细节,这样才能知道哪一种模式能帮助自己解决给定的问题。

3、关于面向对象方法

使用设计模式的根本原因是为了保持类之间的隔离,防止相互之间了解太多的内容;另一个重要的原因是,使用这些模式可以帮助读者避免重复开发,能用其他程序员容易理解的术语描述你的程序设计方法。

有很对策略能让OO程序员达到分离类的目的,其中包括继承和封装。几乎所有具备OO能力的语言都支持继承。一个继承父类的类能访问父类的所有方法和所有非私有变量,然而,如果以一个功能完整的累开始继承层次结构,可能会过多地限制住自己,也会给特定方法的实现带去累赘。因此,建议应遵循下列设计原则:针对接口编程,而不是针对实现编程。

用更简洁的形式来表示这一原则,就是在任何类层次结构的顶端,定义的是一个抽象类或一个接口,他没有实现方法,但定义了该类需要支持的方法。这样在所有的派生类中,就会有更大的自由度去实现这些方法,能最大限度地满足你的要求。

 

转载于:https://www.cnblogs.com/yuzhou133/p/10437608.html

相关文章:

  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • __setitem__,__getitem,__delitem__的作用
  • MQ框架的比较
  • 更好用的集群限流功能,Sentinel 发布 v1.4.2
  • Promise面试题,控制异步流程
  • opencv 增强现实(二):特征点匹配
  • CentOS 7 root口令恢复
  • [UOJ430]line
  • JavaScript 复习之 Object对象的相关方法
  • Fundebug计费标准解释:事件数是如何定义的?
  • mysql的备份脚本
  • mysql 数据库四种事务隔离级别
  • 题解 CF191C 【Fools and Roads】
  • springMvc学习笔记(2)
  • 【组队竞赛学习】vue+node在线商城项目
  • .pyc 想到的一些问题
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【技术性】Search知识
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • JavaScript设计模式之工厂模式
  • Java超时控制的实现
  • JS实现简单的MVC模式开发小游戏
  • LeetCode算法系列_0891_子序列宽度之和
  • Odoo domain写法及运用
  • 包装类对象
  • 对象管理器(defineProperty)学习笔记
  • 让你的分享飞起来——极光推出社会化分享组件
  • 树莓派 - 使用须知
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #100天计划# 2013年9月29日
  • #QT(智能家居界面-界面切换)
  • (2020)Java后端开发----(面试题和笔试题)
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (52)只出现一次的数字III
  • (分类)KNN算法- 参数调优
  • (附源码)计算机毕业设计大学生兼职系统
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (算法)N皇后问题
  • (小白学Java)Java简介和基本配置
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)Unity3DUnity3D在android下调试
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET的数据绑定
  • []串口通信 零星笔记
  • [1181]linux两台服务器之间传输文件和文件夹
  • [Android]使用Retrofit进行网络请求
  • [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE
  • [HDU 3555] Bomb [数位DP]
  • [linux] shell中的()和{}
  • [Neural Network] {Université de Sherbrooke} L2.9 Param Initialization
  • [Node + Docker] 聊聊怎么把 nodeclub 构建成 Docker 镜像