有没有软件可以共享代码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有软件可以共享代码?相关的知识,希望对你有一定的参考价值。

比如三个人写一个网站、修改一份代码、修改后的代码三个人都可以看到、、、谢谢

不太明白你的意思,不过你用SVN软件的checkout功能是可以的,其实如果是需要三个人同时解决代码问题的话,QQ的远程功能也是可以的。来自:求助得到的回答 参考技术A svn、cvs、smartgit

如何在一些子类之间共享代码?

【中文标题】如何在一些子类之间共享代码?【英文标题】:How to share code between some of the subclasses? 【发布时间】:2019-11-11 09:38:40 【问题描述】:

我有一个包含多个子类的抽象类(截至目前已超过 20 个),并且我希望仅在其中 2 个子类之间共享代码和变量。

如果我将方法和变量放在超类中,那么所有子类都可以访问它们,但我希望只有 2 个子类可以访问它们,并且基本上可以知道它们的存在。 有没有办法做到这一点?

谢谢

【问题讨论】:

也许这两个子类应该扩展一个中间抽象类来扩展你的基类。 Java 中的类层次结构不限于 2 级 :) 你能解释一下这两个类和其他类的区别是什么吗?因为大多数人都建议使用多个级别的类,而使用接口(抽象类除外)可能更容易解决您的问题。 很可能你不需要inheritance,但你需要composition 类并不是真正用于在代码之间共享数据,而是为常见行为建模。说你有“20 个子类”对我来说听起来像是一种代码味道。 【参考方案1】:

您可以通过应用composition instead of inheritance 原则来解决它:创建一个新类,其中包含应在 2 个子类之间共享的功能,并在 2 个子类中使用对新类实例的引用。

这样您将避免在子类和超类之间添加额外的层,并且您的代码将更加灵活且易于维护。

当向超类添加一些共享功能并通过继承获取它感觉不自然时,几乎总是建议使用这种方法。如有疑问,请始终问问自己,HAS-A 关系(组合)是否比 IS-A 关系(继承)更合适。

虽然在一个超类中将多个功能组合在一起可能会有所帮助,但如果您需要在多个类之间共享一个功能,使用组合来实现它可能会更合适。

【讨论】:

【参考方案2】:

让我们创建一个实际示例,以便您了解应该如何解决这个问题。

我们有一个名为Alive 的类。我们将使用它作为DogWolfHuman 的父类。我们需要DogWolf 有一个方法growl(),但Human 没有。

class Alive

    abstract void smell();
    abstract void see();
    abstract void hear();
 

class Canis extends Alive

    abstract void growl();
 

class Human extends Alive


class Dog extends Canis


class Wolf extends Canis

这是继承层次结构的示意图:

                             Alive  
                             /  \
                            /    \
                           /      \
                        Human    Canis
                                  / \
                                 /   \
                               Dog   Wolf    

【讨论】:

【参考方案3】:

计算机科学中的所有问题都可以通过另一个间接层次来解决。(by David Wheeler)

因此,只需创建另一个(抽象)类来扩展您的基类并添加您只需要在那些特定子类中的常见内容。

上述引用并不总是正确的,但至少在概念上,另一个有用抽象通常是解决设计问题的最佳方法。

【讨论】:

@AndyTurner 更清楚地表明这是一个有点讽刺的引用。【参考方案4】:

除了继承之外,您还可以使用组合。创建另一个类并将您的方法和变量放入其中,并在您的 2 个类中引用这个新类。此外,使用正确的打包和访问修饰符,您只能从这 2 个客户端类访问您的新类。 希望对您有所帮助。

【讨论】:

【参考方案5】:

你可以从基类扩展抽象类,把你要共享的方法放在这个类中,然后从新的中间件类扩展你要共享方法的两个类。

【讨论】:

以上是关于有没有软件可以共享代码?的主要内容,如果未能解决你的问题,请参考以下文章

有的共享软件赚了一百万美元,而为什么你没有?&&我的软件推广成功之路

有啥免费的局域网共享文件管理软件?

python 软件之间如何通信

什么软件可以实现远程文件夹共享。

软件授权是啥意思?

视频会议软件如何进行屏幕共享