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