前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图图谈设计模式_建造者设计模式_java

图图谈设计模式_建造者设计模式_java

作者头像
一头小山猪
发布2020-04-10 11:00:25
3140
发布2020-04-10 11:00:25
举报
文章被收录于专栏:微光点亮星辰

建造者模式官方的概述:

代码语言:javascript
复制
 将一个复杂对象的构建与它的表示分离,
 使得同样的构建过程可以创建不同的表示。 
 
  简单的说就是一个抽象的实体的构成,需要其部分组件的建造者一齐拼接而成。而我们调用者
 直接装配这个抽象实体的创建者即可。
  StringBuilder是最好的体现,你一直append,无所谓。。
  uml如下

package org.huey.partten.builder;

抽象实体类,需要依赖多个组件

代码语言:javascript
复制
public class Company {
     private Ceo ceo;
     private Manager manager;
     private Programmer programmer;
     public void CompanyService(){
          System.out.println("公司业务。。。。。");
     }
     public Ceo getCeo() {
          return ceo;
     }
     public void setCeo(Ceo ceo) {
          this.ceo = ceo;
     }
     public Manager getManager() {
          return manager;
     }
     public void setManager(Manager manager) {
          this.manager = manager;
     }
     public Programmer getProgrammer() {
          return programmer;
     }
     public void setProgrammer(Programmer programmer) {
          this.programmer = programmer;
     }
}
//组件类
class Ceo {
     private String name;
     public String getName() {
          return name;
     }
     public void setName(String name) {
          this.name = name;
     }
}
class Manager {
     private String name;
     public String getName() {
          return name;
     }
     public void setName(String name) {
          this.name = name;
     }
}
class Programmer {
     private String name;
     public String getName() {
          return name;
     }
     public void setName(String name) {
          this.name = name;
     }
}
package org.huey.partten.builder;
/**
 *
 * 建造组件类
 * @author huey
 *
 *
 */
public interface CompanyBuilder {
     public Ceo buildCeo();
     public Manager buildManager();
     public Programmer buildProgrammer();
}
package org.huey.partten.builder;
public class CompanyBuilderImpl implements CompanyBuilder {
     @Override
     public Ceo buildCeo() {
          System.out.println("need Ceo ..");
          return new Ceo();
     }
     @Override
     public Manager buildManager() {
          System.out.println("need Manager ..");
          return new Manager();
     }
     @Override
     public Programmer buildProgrammer() {
          System.out.println("need Programmer ..");
          return new Programmer();
     }
}
//装配类
package org.huey.partten.builder;
public interface CompanyDerector {
    public Company buildCompany();
}
package org.huey.partten.builder;
public class CompanyDerectorImpl implements CompanyDerector {
     private CompanyBuilder companyBuilder;
     public CompanyDerectorImpl(CompanyBuilder companyBuilder) {
          this.companyBuilder = companyBuilder;
     }
     @Override
     public Company buildCompany() {
          Ceo buildCeo = companyBuilder.buildCeo();
          Manager buildManager = companyBuilder.buildManager();
          Programmer buildProgrammer = companyBuilder.buildProgrammer();
          Company company = new Company();
          company.setCeo(buildCeo);
          company.setManager(buildManager);
          company.setProgrammer(buildProgrammer);
          return company;
     }
}
//测试类
package org.huey.partten.builder;
public class TestBuilder {
     public static void main(String[] args) {
          CompanyDerector companyDerector = new CompanyDerectorImpl(new CompanyBuilderImpl());
          Company buildCompany = companyDerector.buildCompany();
          System.out.println(buildCompany.getCeo());
          buildCompany.CompanyService();
     }
}
//测试结果

还是那句话,设计模式是一种思想,编程靠的就是思想。高级编程就是面向接口和抽象类编程。望读者有个概念,框架源码最为体现,公司封装的框架我虽然没接触过,但是我相信也是一个套路,毕竟它是结晶。谢谢对我们的支持!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微光点亮星辰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档