一、对象的创建
第1条:考虑用静态工厂方法代替构造函数
概念:所谓静态工厂方法(static factory method),实际上只是一个简单的静态方法,它返回的是类
的一 个实例。
例子:pbulic static Boolean getBoolean()
{
return (Boolean.TRUE);
}
优点:1、与构造函数相比,静态工厂方法可以具有一个具有意义的名字
2、与构造函数相比,每一次调用并不一定非要创建一个新的对象
例子:
class SingletonFactory
{ // 可以看作全局唯一的变量
private static singletonfactory=new SingletonFactory();
private SingletonFactory()
{}
public static SingletonFactory getSingletonFactoryInstance()
{
//这里并不是每次都返回一个新的对象,而是反复返回同一个对象
return singletonfactory;
}
}
3、与构造函数不同,可以返回一个原返回类型的子类型的对象
例子:
Interface BaseInterface
{
void printlns();
}
class BaseImp implements BaseInterface
{
public BaseImp ()
{}
public void printlns()
{
System.out.println("BaseImp's printlns method ");
}
}
abstract class SingletionFactory
{
private static SingletionFactory singletionfactory;
private static String classname="";
private static Object object=new Object();
public static BaseInterface getBaseInterface()
{
if (singletionfactory==null)
{
synchorinzed(obj){
try
{
singletionfactory=(SingletionFactory)Class.forNmae(
classname).newInstaance();
}
catch(ClassNotFoundException e)
{
}
}
}
return singletionfactory.createObject();
}
abstract BaseInterface createObject();
}
缺点:
1、如果类没有public or protected 构造函数,不能子类化
2、与其他静态方法没有任何区别,静态工厂方法代表了一种对规范的背离
分享到:
相关推荐
3. **构造函数与工厂方法(Constructors and Factory Methods)**: 书中提倡使用工厂方法代替公共构造函数,以实现更好的封装和灵活性。这里可能包含不同类型的工厂模式实现。 4. **可变与不可变对象(Mutable vs ...
3. **优先考虑静态工厂方法而非构造器**:静态工厂方法比公有构造器更灵活,它们不需要在每次实例化时都创建一个新的类实例,还可以返回已缓存的实例或限制对象的创建。 4. **使用不可变对象**:不可变对象一旦创建...
17. 使用私有静态工厂方法代替构造函数。 18. 优先考虑使用私有构造函数和公有工厂方法。 19. 使用私有构造函数实现不可实例化的工具类。 20. 使用枚举来实现Singleton模式。 21. 避免创建不必要的对象。 22. 使用...
1. **构造器与工厂方法**:书中强调,类的构造器应该简洁且易于理解,同时推荐使用工厂方法来替代公开构造器,以提供更灵活的实例创建策略。 2. **枚举代替常量类**:枚举类型不仅提供了安全性和便利性,还能避免...
9. **项9:使用静态工厂方法代替构造器** 静态工厂方法有命名自由、不需暴露构造器、可以返回原类型或子类型的实例等优势。 10. **项10:考虑提供一个无参构造器用于序列化** 序列化时,如果类没有无参构造器,...
3. **静态工厂方法(Static Factory Methods)**:这些方法优于公有构造函数,因为它们可以返回已存在的对象、返回子类型、具有更有意义的名称,甚至可以改变返回类型。在IntelliJ IDEA中,可以创建或重命名静态工厂...
10. **用私有静态工厂方法代替构造函数** 这样可以避免子类化,并且可以控制对象的创建,比如进行资源管理或缓存实例。 11. **优先考虑不可变对象** 不可变对象更安全,线程安全,易于理解,且可以缓存。它们在多...
- **工厂方法**:提倡使用工厂方法来创建对象,以提高代码的灵活性和可扩展性。 - **建造者模式**:推荐使用建造者模式来构造复杂对象,避免长参数列表和可变构造函数。 2. **接口与抽象类** - **接口优先于抽象...
#### EJ 第1条:考虑使用静态工厂方法代替构造器 在实例化对象的过程中,静态工厂方法相较于构造器具有明显的优势。这些优势不仅限于易于理解和避免不必要的对象创建,还包括能够灵活地返回原类型的任何子类型。...
2. **优先考虑静态工厂方法而不是构造器**:静态工厂方法不需创建新类实例即可返回对象,这在需要控制实例数量或者创建复杂对象时非常有用。 3. **重写`equals()`必须重写`hashCode()`**:确保当两个对象相等时,...
《有效的Java》是Java开发领域的一本经典著作,由Joshua Bloch撰写,它为Java程序员提供了一系列实用的编程准则和最佳实践。本书的核心理念是提高代码质量、可读性和可维护性,通过一系列条目介绍了如何编写更高效、...
其中的一些关键点包括:使用枚举代替常量类,避免使用原始类型,利用泛型提升代码复用,以及善用静态工厂方法而非公有构造器等。这些原则有助于写出更高效、更安全的Java程序。 **设计模式** 设计模式是软件工程中...