Java设计模式之七:建造者模式

之前因为去公司实习,晚上下班到家吃完饭快八点半了,看了会电视就想睡觉,都没时间写,趁这个双休,又重新学习了新的模式,建造者模式。

建造者模式顾名思义:就是用来创建产品的。当然啦:这不像之前的工厂模式,创建一样物品就行了。这里的建造指的是创建物品的各个部分。

举个例子:造一栋大厦,都是需要每一个步骤的,同时还有一定的流程,如果你漏掉某一部分,将会导致创建的产品出现错误。下面是代码:



第一步:创建抽象的建造者。

                这样的好处有:利用了多态,能够用导演类指导创建,而不用自己ConcreateBuilder创建。第二个好处是:不会漏掉一个步骤,因为不许要实现抽象方法。

public abstract class AbstractBuilder {

	public abstract void buildPartA();
	public abstract void buildPartB();
	public abstract Product getResult();
}
第二步:创建继承类并实现方法
public class ConcreateBuilder1 extends AbstractBuilder{

	Product product=new Product();
	@Override
	public void buildPartA() {
            product.add("部件A");
	}

	@Override
	public void buildPartB() {
		 product.add("部件B");
	}

	@Override
	public Product getResult() {
		return product;
	}

}

public class ConcreateBuilder2 extends AbstractBuilder{

	Product product=new Product();
	@Override
	public void buildPartA() {
            product.add("部件X");
	}

	@Override
	public void buildPartB() {
		 product.add("部件Y");
	}

	@Override
	public Product getResult() {
		return product;
	}

}

第三步:创建产品类

public class Product {
  private List<String> productList=new ArrayList<>();
  //添加产品部件
  public void add(String part){
	  productList.add(part);
  }
  public void show(){
	  Iterator< String> iterator=productList.iterator();
	  while(iterator.hasNext())
		  System.out.println(iterator.next());
  }
}


第四步:创建导演类,指导创建者创建产品。

public class Director {

	private AbstractBuilder builder;
	public Director(AbstractBuilder builder){
		this.builder=builder;
	}
	
	public void buildProduct(){
		builder.buildPartA();
		builder.buildPartB();
	}
}

第五步:测验

通过需求,new 一个正确的创建者

public void test() {
		AbstractBuilder b1=new ConcreateBuilder1(); //根据用户的需求判断需要哪个创建者
		Director director=new Director(b1);         //构造函数,导演需要指导哪个创建者
		director.buildProduct();                    //导演指导创建者创建
		Product product=b1.getResult();             //创建者创建产品完毕后,返回产品
		product.show();		
	}

第六步:结果

部件A
部件B


每日一谈:

经过一段时间的经历,我觉得现在大三的学生在暑假里有两种选择。

第一种:刷题,看面经,练习算法。

第二种:找公司实习。

如果想在校招里拿到大公司的offer的童鞋,我觉得暑假的时间还是老老实实选择第一种。当然如果你基础太好了,也可以找实习。进阿里可能也不是问题。

如果你对校招不感兴趣,那就可以找实习了。因为暑假里找实习之后,不太会有时间刷题,练习算法。进公司之后都是把项目给你,要用的工具自己去学,像git这样的版本控制是肯定要学的。而且实习期间,需要算法的业务不太会碰到,毕竟连项目都还不了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值