建造者模式,生成器模式
1.将一个复杂对象的构建,与它的表示分离。使的同样的构建过程可以创建不同的表示。
主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,而对象内部的构建通常面临着复杂的变化。
2.建造者继承建造接口类,必须实现所有技能;
指挥者指挥建造者按顺序施展一些技能;
3.建造者模式是在,当创建复杂对象的算法,应该独立于该对象的组成部分以及它们的装配方式,时适用的模式。
对调用者来说,看重的是建造者模式产生需要的对象,而不关心。
对开发者来说,建造者模式内部行为组成是基于模板方法模式,先把构建的各步骤抽象化,然后由具体对象实现。
生产者消费者模式
生产者消费者模式通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。 这个阻塞队列就是用来给生产者和消费者解耦的。纵观大多数设计模式,都会找一个第三者出来进行解耦,如工厂模式的第三者是工厂类,模板模式的第三者是模板类。
线程池与生产消费者模式
Java中的线程池类其实就是一种生产者和消费者模式的实现方式,其实现方式更加高明。生产者把任务丢给线程池,线程池创建线程并处理任务,如果将要运行的任务数大于线程池的基本线程数就把任务扔到阻塞队列里,这种做法比只使用一个阻塞队列来实现生产者和消费者模式显然要高明很多,因为消费者能够处理直接就处理掉了,这样速度更快。而生产者先存,消费者再取这种方式显然慢一些。
