之前因为去公司实习,晚上下班到家吃完饭快八点半了,看了会电视就想睡觉,都没时间写,趁这个双休,又重新学习了新的模式,建造者模式。
建造者模式顾名思义:就是用来创建产品的。当然啦:这不像之前的工厂模式,创建一样物品就行了。这里的建造指的是创建物品的各个部分。
举个例子:造一栋大厦,都是需要每一个步骤的,同时还有一定的流程,如果你漏掉某一部分,将会导致创建的产品出现错误。下面是代码:
第一步:创建抽象的建造者。
这样的好处有:利用了多态,能够用导演类指导创建,而不用自己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这样的版本控制是肯定要学的。而且实习期间,需要算法的业务不太会碰到,毕竟连项目都还不了解。