• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > 几个功能模块公用了部分代码,想修改其中一个功能,如何避免破坏其他功能

几个功能模块公用了部分代码,想修改其中一个功能,如何避免破坏其他功能

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了几个功能模块公用了部分代码,想修改其中一个功能,如何避免破坏其他功能等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 几个功能模块公用了部分代码,想修改其中一个功能,如何避免破坏其他功能
描述:

几个功能模块有部分代码是公用的,想修改其中一个功能,需要修改公用代码,在不确定哪些功能引用了这段代码的情况下,如何避免破坏其他功能


解决方案1:

把“公共代码”写成“公共类”,然后组织结构换成“中介者”模式,降低“公共类”与其他类之间的耦合性,需要改动的地方继承“公共类”,修改要修改的部分

解决方案2:

既然这样,那这个方法就不是公用的了
所以,改这方法,根据实际情况,
加参数,通过参数判断
重新区分业务逻辑,拆分原方法,重新组合

解决方案3:

函数入口加个标识判断,标识为true走你自己写的逻辑,不然就走原来的不动。例子如下:

default()原来的,newFunc()新的,main()公共调用部分

main()
{
  if ($flag) {
        NewFunc();
  }
  else
        Default();
}

或者直接修改default()
default($flag){
  if ($flag) {
        你改的逻辑
  }
  else
        原来的
}
}

这是最简单的改法。。。

解决方案4:

用分类的方式来修改那个方法吧

解决方案5:

两种方式:

  1. 为方法添加 flag 类型的参数,在方法中依据不同的 flag 做不同的处理

  2. 重新写多一个方法

解决方案6:

如果你的修改改变了原有代码的行为的话,最好还是创建一个新的
如果新的代码和原有代码有很多重复的话,可以考虑把可复用的地方提取出来

解决方案7:

创建一个新的方法。包装别人的方法。

function pre() {}

function now() {
    var result = pre()
    // todo sth
    // todo sth
    return newResult
}

解决方案8:

写个子类继承这个公共方法的类,需要修改的地方封装到子类里,目标模块用这个子类。

解决方案9:

创建一个分类 在分类中重写这个方法 在这个文件中导入这个分类。

解决方案10:

可以将子类的代码把公共部分覆盖掉,你就可以任意修改其中一个的功能了

解决方案11:

比如说你要修改公共模块的A方法,这个时候还有其他模块也是用的A,你可以不修改A而是另外写一个A1方法。

解决方案12:

最简单的方法。复制出来单独引用。

解决方案13:

抽象出来
然后再写多个方法来实现抽象的方法,不同的功能点实现不同的业务逻辑。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 几个功能模块公用了部分代码,想修改其中一个功能,如何避免破坏其他功能

相关文章

  • 2017-06-05 iosGCDAsyncSocket收不到服务器的数据,发送数据正常
  • 2017-06-05 taylorswift图片swift如何只显示图片的一部分。
  • 2017-06-05 问天问地问自己iOS有关TextFiled问题
  • 2017-06-05 要做一个支持横竖屏切换的自动布局
  • 2017-06-05 ScrollView掛载,为什么会很久才会显示画面
  • 2017-06-05 iOSApp不上架不越狱不添加UDID,有没有办法直接点击链接下载并安装?
  • 2017-06-05 UIScorllView上面获取手指坐标
  • 2017-06-05 nod32id获取器weexios如何获取设备id如UDID
  • 2017-06-05 Xcode8断点不走
  • 2017-06-05 求助如何在MAC里使用gcc和openmp(已经下载了)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • UILabel行距在UILabel后面添加一个UIButton
    • iphone4激活出错podliblint出错,错误详情在下方
    • uicollectionviewcell自适应问题
    • ios当提示用户评价时,有方法知晓用户是否在AppStore评价了我的app吗?
    • iOS项目编译错误"_OBJC_CLASS_$_FCUtility",referencedfrom:
    • 打开开源项目,许多文件是红色
    • 截长图显示不出来
    • #import<xx/xxh>filenotfound
    • 很多股票APP,VIP推送功能频繁更新tableview,是如何保证APP流畅度的
    • Xcode8的instruments无法定位到代码,全是内存地址

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有