静态内部类实现mysql连接_使用静态内部类实现建造者模式

事实上,在平时编写代码时,我们通常都会忽略对象的复杂性,优先考虑使用工厂模式创建对象,而不是建造者模式。因为工厂模式和建造者模式的作用都是创建一个产品对象,相对于建造者模式来说,工厂模式没有抽象建造者和指挥者,所以结构更加简洁直接,因此更常使用。

一般情况下,我们更习惯使用静态内部类的方式实现建造者模式,即一个产品类内部自动带有一个具体建造者,由它负责该产品的组装创建,不再需要 Builder 和 Director。这样做可以使产品表示与创建之间的联系更加紧密,结构更加紧凑,同时使得建造者模式更加简洁。

如果采用静态内部类形式实现建造者模式,则《建造者模式实现链式赋值》一节的示例可以改写如下。

public class Course {

private String name;

private String means;

private String note;

private String homework;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getMeans() {

return means;

}

public void setMeans(String means) {

this.means = means;

}

public String getNote() {

return note;

}

public void setNote(String note) {

this.note = note;

}

public String getHomework() {

return homework;

}

public void setHomework(String homework) {

this.homework = homework;

}

@Override

public String toString() {

return "CourseBuilder{" + "name='" + name + '\'' + ",means='" + means + '\'' + ",note='" + note + '\'' + ",homework='" + homework + '\'' + '}';

}

public static class Builder {

private Course course = new Course();

public Builder addName(String name) {

course.setName(name);

return this;

}

public Builder addMeans(String means) {

course.setMeans(means);

return this;

}

public Builder addNote(String note) {

course.setNote(note);

return this;

}

public Builder addHomework(String homework) {

course.setHomework(homework);

return this;

}

public Course build() {

return course;

}

}

客户端测试代码如下:

public static void main(String[] args) {

CourseBuilder builder = new CourseBuilder().addName("设计模式").addMeans("教程资料").addNote("课堂笔记").addHomework("课后作业");

System.out.println(builder.build());

}

运行结果如下:

CourseBuilder{name='设计模式',means='教程资料',note='课堂笔记',homework='课后作业'}

使用静态内部类实现建造者模式会使代码看上去更加整洁,不会让人感觉到多了一个类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值