当前位置: 网站首页  >> 知识库  >> Android  >> 查看详情

Android高效代码注意什么?

发布时间:2019-03-12 10:55:05  浏览次数:2128 

强制不能生成实例

如果不希望使用new 关键词创建对象,则可以把构造函数的访问权限设置为private,尤其是那些只包含静态方法的工具类。

class MovieUtils{

private MovieUtils(){}
static String titleAndYear(Movie movie){

//代码内容

}

}

静态工厂

使用静态工厂方法代替new 关键词创建对象,工厂方法通过不同的命名可以根据需要返回不同的子类对象,而且如果需要可以不用每次都创建新对象。

class Movie{

//代码内容
static static Movie create(String title){

return new Movie(title);

}

}

[Update] 一个读者提出一个建议:使用静态工厂后不方便测试,如果是这样,可以在测试期通过使用非静态工厂来模拟。

Builders

当构造方法中有超过三个参数时,可以考虑使用builder去构建对象,可能有些繁琐,但是这样易于扩展且可读性更强。如果是创建一个 value class,可以使用AutoValue

class Movie {

static Builder newBuilder() {

return new Builder();

}
static class Builder {

String title;

Builder withTitle(String title) {

this.title = title;
return this;

}

Movie build() {

return new Movie(title);

}

}

private Movie(String title) {
//代码内容
}

}

静态内部类

如果创建内部类时不依赖外部类,一定要定义为静态类,否则内部类的实例会持有外部类实例的引用。

class Movie {

static class MovieAward() {
//代码内容
}

}

联系我们
在线咨询 QQ客服 0731-88362910
地址:湖南省长沙市雷锋大道1389号
如有问题,可在线提交表单