构造方式
无参
有参
引用其他构造器this(...)
构造模式
单例模式
Class A {
private static A instance;
public A getInstance() {
if(instance==null) instance = new A();
return instance;
}
}
帮助者模式(Utility/Helper类)
无实例( non-instantiable)类(构造器被定义成private),仅仅可以选择将方法定义成final(后续会介绍如何定义类)或者static。
helpers类经常所扮演的是一个容器的角色,这个容器中放了很多在其他地方找不到但是其他类需要相互共享和使用的互相不相关的方法。
public final class HelperClass {
private HelperClass() {
}
public static void helperMethod1() {
// Method body here
}
public static void helperMethod2() {
// Method body here
}
}
---------------------
作者:RonTech
来源:CSDN
原文:https://blog.csdn.net/zyhlwzy/article/details/78937421
版权声明:本文为博主原创文章,转载请附上博文链接!
工厂模式
接口
public interface BookFactory {
Book newBook();
}
实现
public class Library implements BookFactory {
@Override
public Book newBook() {
return new PaperBook();
}
}
public class KindleLibrary implements BookFactory {
@Override
public Book newBook() {
return new KindleBook();
}
}
---------------------
作者:RonTech
来源:CSDN
原文:https://blog.csdn.net/zyhlwzy/article/details/78937421
版权声明:本文为博主原创文章,转载请附上博文链接!
调用
Book a = new KindleLibrary();
依赖注入
依赖注入(一说控制反转)被类设计者认为是一个很好的做法:如果某些类的实例依赖其他类的实例,被依赖的实例应该通过构造(比如通过设置器——setters,或者策略——strategies模式等)的思想提供给依赖的实例,而不是依赖的实例自行创建。
不好的实例:
public class Dependant {
private final DateFormat format = DateFormat.getDateInstance();
public String format( final Date date ) {
return format.format( date );
}
}
好的实例(构造器注入和方法注入):
public class Dependant {
private final DateFormat format;
public Dependant( final DateFormat format ) {
this.format = format;
}
public String format( final Date date ) {
return format.format( date );
}
}