java – 何时使用getInstanceOf而不是构造函数
几个月前,我参加了由两位独立软件开发公司代表主持的演讲.它主要是关于良好的软件设计和实践.
这两个人主要谈论Java,我记得他们说,在某些情况下,使用getInstanceOf()而不是构造函数是一个很好的做法.它与总是从不同的类而不是构造函数调用getInstanceOf()有关,它是如何在更大规模的项目上更好的方法. 正如你所看到的,我现在记不起来了:/但我记得他们使用的论据确实令人信服.我想知道你们有没有遇到过这样的设计,你知道它什么时候有用吗?或者你认为它根本不存在? 解决方法
他们可能正在讨论静态工厂方法模式(而不是用于动态创建对象的反射API方法).
在构造函数上使用getInstanceOf()方法和使用new方法有几个优点.静态工厂方法可以…… >如果在某些情况下需要(基于环境条件,例如属性和其他对象/单例或方法参数),则选择创建主类的不同子类. // This class will not compile! public class MyClass { public MyClass(String name,int max) { //init here } public MyClass(String name,int age) { // init here } } // This class will compile. public class MyClass2 { private MyClass2() { } public static MyClass2 getInstanceOfMax(String name,int max) { MyClass2 m2 = new MyClass2(); // init here return m2; } public static MyClass2 getInstanceOfAge(String name,int age) { MyClass2 m2 = new MyClass2(); // init here return m2; } } >做上述任何组合. 构造函数只能创建所请求的确切类型的对象的新实例.以后不能改变. 这种模式的一些缺点是: >工厂方法是静态的,因此不能在子类中继承;子类很容易访问父构造函数. 你还要求个人经历.是的,我经常使用这两种模式.对于大多数类构造函数,但是当有更多高级需求时,我使用静态工厂.我还从事其他语言的项目(专有,但类似于Java),这种形式的构造是强制性的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在泛型类的类型字段中定义的按名称创建的类
- java – 为什么我的quicksort性能比我的mergesort差?
- 如何确保java中的Collections只包含一个Type?
- java – JUnit – 应该为在setUp中实例化的tearDown中的资源
- java – JAXB,自定义绑定,Adapter1.class和Joda-time
- java – 允许`boolean`和’Object`的平等比较?
- nsurlconnection – 可变NSHTTPURLResponse或NSURLResponse
- java – 在ZonedDateTime或Instant中将小时分和秒设置为00
- java – gradle守护进程的高内存使用
- Java工作队列代码详解