js 多态性的考究
来源:互联网 发布:财务对账软件 编辑:程序博客网 时间:2024/05/09 13:19
多态在面向对象程序设计中的作用:
就js多态性问题就行考究下:
多态是面向对象编程语言中最重要的技术利用对象的多态 ,对象 应 做什么并不是临时决定的,而是已经事先约定和排练完毕的。每个对象应该做什么,已经成为了对象的一个方法,被封装在对象的内部,每个对象负责它们自己的行为。所以这些对象可以根据同一个消息,分别进行各自的工作。行为分布在各个对象中,并让这些对象各自负责自己的行为,这正是面向对象设计的优点。
设我们要编写一个地图应用,现在有两家可选的地图API提供我们自己的应用。目前我们选择的是谷歌地图,谷歌地图的 API 中提供了show 方法,负责在页面上展示地图。var googleMap = { show: function(){ console.log( '谷歌地图' ); }};var renderMap = function(){ googleMap.show();};renderMap(); //输出:后来由于某些原因,需要把谷歌地图换成百度地图,为了让renderMap函数保持一定的弹性,我可以采用一些条件分支来renderMap函数同时支持谷歌和百度;var gooleMap = { show:function(){ console.log('谷歌地图'); }};var baiduMap = { show:function(){ console.log('百度地图'); }};var renderMap = function(type){ if(type === 'google'){ gooleMap.show(); }else if(type === 'baidu'){ baiduMap.show(); }};renderMap('google');//renderMap('baidu');虽然保持来一定程度的弹性,但是,还是比较脆弱的,如果再增加个搜狗地图,我们就还得修改renderMap函数;
所以,我就把程序中相同的部分抽象出来,那就显示某个地图;var renderMap = function(map){ if(map.show instanceof Function){ map.show(); }};renderMap(gooleMap);//renderMap(baiduMap);
现在我们来找这段代码的多态性。当我们向谷歌地图和百度地图对象分别发出“展示地图”的消息时,会分别调用它们的show方法,就会产生不同的结果。对象的多态性提示我们,‘做什么’和‘怎么去做’是可以分开的,即使以后增加其他地图,renderMap函数仍然不需要改变;var sosoMap = { show:function(){ console.log('嗖嗖地图'); }};renderMap(sosoMap);
阅读全文
1 0
- js 多态性的考究
- Java异步访问的考究
- C++中对象优化的个人考究
- 考究Hadoop中split的计算方法
- 关于hibernate 在大型系统中性能的考究
- 如何高效的更新大量数据 -- 有待考究
- 结构体和类的区别(待考究)
- js 多态性实例
- 多态性——对象的多态性
- 关于考究--认知世界,在网络发达的年代(牛皮癣的思考)
- 约束鲶鱼型人才行为要对激励的禁区作一番考究
- 【Unity&IUnity精灵&Unity物体】生成&控制大量物体的时间考究
- 书画落款考究
- C++的多态性
- java的多态性
- C++的多态性
- 多态性,重载的感悟
- Java多态性的例子
- Node.js 源码安装
- SDN
- linux下测试磁盘的读写IO速度
- Java基础入门知识
- 哈夫曼树(最优二叉树)&哈夫曼编码.c++
- js 多态性的考究
- MP算法详细过程解析
- CryEngineBase类的设计
- python异常处理
- android知识1-Activity
- Visual C++内存泄露检测—VLD工具使用说明
- 【Qt5】创建文件夹
- gdb出现During startup program exited with code 127的解决方法
- 51nod 2006 飞行员配对(二分图最大匹配)