OO之美3
面向对象和基于对象
基于对象:所以基于对象,就是一种对数据类型的抽象,封装一个结构包含了数据和函数,然后以对象为目标进行操作.构建的基础是对象,但是操作对象并不体现出面向对象的继承性,也就是基于对象局限了通过对象模式板产生对象的福利.基于对象,不具有继承特性,也就更无所谓多态,但是对象本身的封装性仍然作为很多技术的基础,例如可以设置属性,调用方法,基于对象的语言特征就是将属性或者方法,包含在以对象为结构的组织中.然而,并不能通过"继承"访问父类对象的属性,方法.这是二者本质的区别所在.
从运行时的角度来看,基于对象的操作可以在编译时确定,不需要虚分派机制的额外消耗,但是必然少了多态带来的类型决断在运行时的灵活性.
二者差别
c#就是面向对象语言.JS就是基于对象语言.关键点看是否能现实多态,能否实现继承
总而言之,面向对象与基于对象,二者的概念主要体现在:
⑴继承是区别面向对象与基于对象的核心所在,对于少了继承性的基于对象来说,自然少了多态性的支持.
⑵封装是面向对象与基于对象的共同特征
也谈.Net闭包
(使用lamda表达式就是一种代表)
闭包,广泛存在于函数式编程语言的概念中,很多高级语言例如:Smalltalk,JavaScript,Ruby还有Python对闭包都有或多或少的支持.因此,在.NET平台中,对闭包的支持也不能例外,本文就以此为话题,探讨相关的内容.
本质上,闭包源自数据概念.在编程语言领域,闭包的概念主要是指由函数以及函数相关的上下文环境组合而成的实体.通过闭包,函数与其上下文变量(又被称为自由变量,表示局部变量之外的变量)之间建立起关联关系,上下文变量的状态可以在函数的多次调用过程中持久保持.从作用域的角度而言,私有变量的生存期被延长,函数调用所生成的值在下次调用时扔被保持.从安全性的角度而言,闭包有利于信息的隐蔽,私有变量只在该函数内可见.
闭包,是函数式编程的精灵,在.NET平台中,这个精灵同样带来诸多方面的应用,典型的表现主要体现在以下几方面
㈠定义控制结构,实现模块化应用.闭包实现了以最简单的方式开发粒度最小的模块应用.实现一定程度的算放复用.
㈡多个函数共享相同的上下文环境,进而实现通过上下文变量达到数据交流作用.
利用好闭包,可以达到函数式编程的作用.形成闭包有一些值得总结的非必要条件:
⑴嵌套定义的函数
⑵匿名函数
⑶将函数作为参数或者返回值
谈谈闭包与函数:
像对象一样的操作函数,是闭包发挥的最大作用,从而实现了模块化的编程方式.不过,闭包与函数还是有区别的:
1,闭包是函数与其引用环境组合而成的实体.不同的引用环境和相同的函数可以组合产生不同的闭包实例
2,函数是一段可执行的代码体,在运行时不会由于上下文环境发生变化.
闭包福利:
代码简化,数据共享与延迟,安全性
闭包缺陷:
不可避免使逻辑变的复杂,闭包的延迟性也带来一定的逻辑问题.
OO之美3的更多相关文章
- 《你必须知道的.NET》读书笔记三:体验OO之美
此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.依赖也是哲学 (1)本质诠释:“不要调用我们,我们会调用你” (2)依赖和耦合: ①无依赖,无耦合 ...
- OO之美4(好代码与坏代码)
前言:写代码不仅仅要做到能与机器交流,更要做到能和人交流 编码规范:编码规范就是最佳实践,是前辈在编码这件事上的积累和总结,是智慧的延续和工业的实践,如下: ⑴命名规范 ⑵避免行数过多的方法 ⑶代码缩 ...
- OO之美2
面向对象并没有想象中那么神秘,以生活的现实眼光来看更是如此.把面向对象深度浓缩起来,可以概括为: ⑴目标:重用,扩展,兼容 ⑵核心:低耦合,高内聚 ⑶手段:封装变化 ⑷思想:面向接口编程,面向抽象编程 ...
- OO之美
㈠ 设计的分寸 对于设计,还有很多看似"惯常"的法则与经验广泛存在于软件系统中,例如除了经典的23种设计设计模式.还有很多模式之外的模式,按照粒度的大小,系统的特点,规模的大小,而 ...
- 《必须知道.NET》3.OO之美
3.2 依赖的哲学 3.2.1 本质诠释 "不要调用我们,我们会调用你" 3.2.2 什么是依赖,什么是抽象 "耦合是不可避免的" (1)什么是依赖和耦合 依赖 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- 设计模式之美:Type Object(类型对象)
索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Type Object 的经典介绍. 实现方式(二):Type Object 在游戏设计中的使用. 意图 允许在运行时动态灵活的 ...
- 结对编程-地铁续(有种上个学期OO的既视感)
我们组比较特殊..三人结对 github:https://github.com/qingchanghan/WPFUI_Metro po一张照片: 石浩然,韩青长.陈彦吉 (台式机真的很高端,分屏贼帅) ...
- 菜鸡谈OO 第二单元总结
“欢迎来到(玄学)多线程的新世界” Homework1 单部傻瓜电梯调度 Part1 多线程设计策略 第一次学到了线程这个概念,与之前的编程体验大有不同.最大的区别在于从原本的线性发生程序变成了多个行 ...
随机推荐
- APP UI设计相关的一些链接
安卓app设计规范整理和Android APP设计篇 http://www.25xt.com/appdesign/6536.html APP UI面试题:iOS和安卓的ui设计有什么区别 http:/ ...
- Html - 仿QQ空间右下角工具浮动块
仿QQ空间右下角工具浮动块 <style type="text/css"> .cy-tp-area>.cy-tp-fixbtn>.cy-tp-text { ...
- Powershell连接Office 365各组件的方法
参考: http://www.exchangecn.com/office365/20150108_540.html 1. 适用于 IT 专业人员 RTW 的 Microsoft Online Serv ...
- 如何安装ESXi的补丁
1.进入维护模式 2.通过vSphere Client上传补丁 3.开SSH后使用Putty连接 4.esxcli software vib install -d="/vmfs/volume ...
- 简单的form表单操作(Servlet)
Servlet模型 [表单的处理][模型(1)] ●HTML网页 <!DOCTYPE html> <html> <head> <meta charset=&q ...
- Web 在线文件管理器学习笔记与总结(11)获取文件夹信息 (12)返回上一级操作
(11)获取文件夹信息 文件夹没有修改操作. index.php: <?php require 'dir.func.php'; require 'file.func.php'; require ...
- eclipse中project->clean的作用是什么
1.由于eclipse的编译是基于时间戳的判断机制的.因此当你按build all的时候有些eclipse认为时间戳没有改变的类不会被编译.因此你可以先clean一下再编译.这个时候eclipse ...
- charles 常用设置
一.过滤网络请求 通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求.对于这种需求,我们有2种办法. 1.在主界面的中部的Filter栏中填入需要过滤出来的关键字.例如我们的服 ...
- iOS标准时间与时间戳相互转换
iOS标准时间与时间戳相互转换 (2012-07-18 17:03:34) 转载▼ 标签: ios 时间戳 标准时间 格式 设置 转化 杂谈 分类: iPhone开发 设置时间显示格式: NS ...
- 批处理之命令补充II
网络命令 net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" / ...