Item1:考虑使用静态方法代替构造方法
通常客户端都是通过类的构造方法来获得一个类的实例,另外一种方式则是给该类添加一个静态的工厂方法(并非工厂模式),例如下面的方式:
public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}
这样的做法有优点也有弊端
优点之一是静态方法可以有自己的方法名,从而让代码的可读性更好,也避免了重载的构造方法不便区分的缺点
优点之二是利用静态的构造方法,可以避免每次调用都新建一个类的实例,这样可以实现immutable类的对象的复用。就像上面所示的Boolean.valueOf(boolean)方法,这点和享元模式(Flyweight )有类似之处。
优点之三是静态方法可以返回一个类的子类的对象,这样可以充分利用Java的多态特性,对于基于抽象编程思想而言是非常有利的。
优点之四是可以避免构造方法冗长的参数列表(美观?)。
静态方法代替构造方法有两个缺陷
其一是没有public和protected构造方法的类,不能够有使用这样的方式。
其二是静态工厂方法不容易和其它的静态方法做区分。
下面是静态工厂方法命名的一些建议:
valueOf
of
getInstance
newInstance
getType
newType
分享到:
相关推荐
- **静态工厂方法**:使用静态工厂方法代替构造函数,因为它们可以拥有特定的名字,避免不必要的对象创建,且可以返回任何子类的对象,增加灵活性。 - **Singleton模式**:用于确保一个类只有一个实例,并提供一个...
##### 用静态工厂方法代替构造器 在面向对象编程中,对象的创建通常是通过构造器来完成的。然而,在某些情况下,使用静态工厂方法来创建对象可能会更加灵活和高效。 **静态工厂方法的优势**: 1. **命名清晰**:...
考虑使用静态工厂方法代替构造方法 优点: 有名字 每次调用的时候,不一定要创建新的对象 可以返回一个类型的子类型 Collections就是这种用法 返回对象的类可以随调用的不同而变化(用输入的参数值决定返回哪个),如...
- 构造函数和析构函数:创建和销毁对象的过程,以及何时使用默认和自定义构造函数。 - 访问修饰符:public、private、protected和internal的用法。 4. **第4章:C#核心编程结构Ⅱ** - 集合:介绍ArrayList、...
### 第二章 创建和销毁对象 这一章深入探讨了对象的生命周期管理,包括: 1. **静态工厂方法**:相比构造器,静态工厂方法有优点如可以不返回新实例、允许返回同一实例(单例)、可以有更具选择性的访问控制,并且...
静态工厂方法可以代替构造器,提供了更多的灵活性和性能优势。静态工厂方法可以返回原类型的任何子类型,且可以将构建好的实例缓存起来,方便重复利用,不用每次调用都创建新对象,从而提高性能。 静态工厂方法的...
- 避免无用的对象创建:频繁创建和销毁对象会增加垃圾收集的压力,考虑使用对象池或者重用已有的对象。 - 使用静态内部类:如果内部类不会引用到外部类的实例变量,可以声明为静态,减少内存占用。 - 尽量使用...
3. **减少对象创建**:频繁地创建和销毁对象会消耗大量内存和CPU资源。尽量重用对象,避免在循环或高频调用的方法中创建新对象,特别是使用基本数据类型或数组代替对象。 4. **使用final修饰符**:final关键字可以...
这种模式适用于那些需要频繁创建和销毁的对象,例如日志管理器、线程池、对话框、注册表设置等。 ##### 应用场景 以 Sunny 软件公司的服务器负载均衡软件为例,该软件的核心功能之一是确保负载均衡器的唯一性。在...
这种方式可以结合使用工厂模式,确保在需要时创建和销毁对象。 6. **懒加载(Lazy Loading)** 如果一个对象只有在特定条件下才会被用到,可以使用懒加载技术。在首次使用时才创建对象,这可以避免在程序启动时...
这些函数通常在创建和销毁对象时调用。 6. 静态和动态绑定:C语言中的函数调用是静态绑定的,即在编译时确定。为了实现动态绑定,需要编写一些间接调用的机制,如函数指针数组或虚拟函数表。 "C语言面向对象库...
6. **对象复用**:如果可能,复用已存在的对象而不是频繁创建和销毁。 三、编译器优化 1. **编译器开关**:开启编译器的优化选项,如GCC的-O2或-O3,可以让编译器对代码进行优化。 2. **内联函数**:内联函数能...
重用对象可以减少对象的创建和销毁,提高性能。特别是在 String 对象的使用中,出现字符串连接情况时应用 StringBuffer 代替。这样可以减少对象的创建和销毁,提高性能。 3. 使用局部变量 使用局部变量可以提高...
- **实例管理**:对于那些频繁创建和销毁成本较高的对象,可以通过单例模式保持单一实例,提高系统的整体性能。 - **数据共享**:单例模式可以让不同线程或进程间共享同一份数据,简化通信过程。 #### 二、谨慎...
频繁地创建和销毁对象会增加垃圾回收的压力,从而影响程序性能。可以通过以下方式减少对象创建: 1. **对象复用**:尽可能复用已有的对象而不是创建新的。 2. **使用基本数据类型或数组**:在适当的情况下使用基本...
27. **异常安全的资源分配**:使用异常安全的构造函数和析构函数,确保即使在异常发生时也能正确释放资源。 28. **理解编译器警告**:将警告视为错误,及时修复潜在的问题。 29. **使用`const`和`constexpr`进行...
通过对象池,可以避免频繁创建和销毁对象带来的性能开销,尤其是在高并发环境下效果显著。 #### 六、序列化优化 序列化大变量时,如果该变量在序列化后不再使用,可以使用`transient`关键字声明,避免序列化过程中...
在`main` 函数中,我们看到如何创建和初始化类的对象。例如,`CPU cpu(P2, 1200, 100.0)` 就是使用参数调用构造函数创建了一个`CPU`对象。在实验三中,`CLIENT` 类也展示了如何通过成员初始化列表进行对象初始化。 ...