Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 在面向对象编程中,引用类的最佳方式是什么?_Oop - Fatal编程技术网

Oop 在面向对象编程中,引用类的最佳方式是什么?

Oop 在面向对象编程中,引用类的最佳方式是什么?,oop,Oop,一个好的代码是每个程序员都想写的,优化的,健壮的,性能好的,可重用的,等等。我在面向对象编程方面做了相当长的时间。我见过许多不同的代码,其中不同的开发人员使用不同的引用机制 一些开发人员使用 Classname c = new Classname(); c.method(); c.method2(); 等等 而一些开发人员使用了以下策略 (new ClassName()).method(); (new ClassName()).method2(); 我想知道他们两个的优点是什么,他们之间的实

一个好的代码是每个程序员都想写的,优化的,健壮的,性能好的,可重用的,等等。我在面向对象编程方面做了相当长的时间。我见过许多不同的代码,其中不同的开发人员使用不同的引用机制

一些开发人员使用

Classname c = new Classname();
c.method();
c.method2();
等等

而一些开发人员使用了以下策略

(new ClassName()).method();
(new ClassName()).method2();
我想知道他们两个的优点是什么,他们之间的实际区别是什么

Classname c = new Classname();
c.method();
c.method2();
如果要重用对象,它最好在调用方法之前创建一次对象,因此比

(new ClassName()).method();
(new ClassName()).method2();
这基本上就是每次调用方法时创建一个新对象

考虑这一点:

(new ClassName()).getName(); // Returns default value John Doe
(new ClassName()).setName('Steve');
(new ClassName()).getName(); // Returns default value John Doe

Classname c = new Classname();
c.getName(); // Returns default value John Doe
c.setName('Steve');
c.getName(); // Returns Steve

第二个例子没有意义。它表明
类名
是无状态的,因此可以使方法
成为静态的
。即使他们需要使用一些构造函数参数(虽然在您的示例中没有),如果可以实例化一个对象一次,为什么还要实例化两次呢?在microscale中,这比只创建一次对象要慢。此外,它也不能帮助内存管理环境中的垃圾收集器。当然,在大多数情况下,这两个问题可以忽略不计

对于第二个示例,我可以想象的唯一情况是一个引导场景,当您在主分区中设置整个应用程序并启动它时:

main()
{
    (new Application(...)).Run();
}
将只有一个应用程序对象,并且只需要调用一个方法,因此保留其实例的句柄并不重要。另一个示例是启动一些自定义线程类来执行一些后台操作:

{
    (new BackgroundWorkerThread(...)).Start();
}
我从来没有见过一个理智的例子,用您介绍的方式从同一个类调用两个实例方法