director

设计模式之创建者模式

╄→尐↘猪︶ㄣ 提交于 2020-01-15 09:29:09
定义 (From百度百科): 其核心思想是将一个“复杂对象的构建算法”与它的“部件及组装方式”分离,使得构件算法和组装方式可以独立应对变化; 复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式 UML类图 : 具体代码: public class Client { public static void main(String[] args) { Director d = new Director(new ConcreteBuilder()); d.construct(); } } public class Director { Builder builder; Director(Builder builder){ this.builder = builder; } void construct(){ builder.buildPart(); } } public class ConcreteBuilder implements Builder { private Product product; public Product getResult() { return product; } @Override public void buildPart() { } } public class Product { } 举个例子: 一辆车是由很多部件组成的

【设计模式】建造者模式

烂漫一生 提交于 2020-01-14 08:23:16
1、定义 1.1 标准定义   建造者模式( Builder Pattern) 也叫做生成器模式, 其定义如下:   Separate the construction of a complex object from its representation so that the same construction process can create different representations.( 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示。 ) 1.2 通用类图   在建造者模式中, 有如下4个角色:   ● Product产品类   通常是实现了模板方法模式, 也就是有模板方法和基本方法, 参考模板方法模式。   ● Builder抽象建造者   规范产品的组建, 一般是由子类实现。   ● ConcreteBuilder具体建造者   实现抽象类定义的所有方法, 并且返回一个组建好的对象。   ● Director导演类   负责安排已有模块的顺序。 2、实现 2.1 类图   Builder :定义创建对象过程的抽象,提供构建不同组成部分的接口   其中:BuildPartA,BuildPartB,BuildPartC是对一个对象不同部分的构建函数接口,由Builder的派生类ConcreteBuilder1

职责链模式

谁说胖子不能爱 提交于 2020-01-13 09:11:39
动机(Motivate): 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受者?让请求的接受者自己在运行时决定来处理请求,从而使两者解耦。 意图(Intent): 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止 适用性: 1.有多个对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。 2.你想在不明确接收者的情况下,向多个对象中的一个提交一个请求。 3.可处理一个请求的对象集合应被动态指定。 职责链模式与状态模式很相似,状态模式将各个状态的切换写在各自的内部,逐级变化,而职责链模式将各个状态的切换写在外部,由用户指定 #region 构建抽象处理者 public abstract class Approver { protected Approver _approver;//保证同一个实例下,设置交付SetSuccessor都为同一个Approver对象 public void SetSuccessor(Approver approver) { _approver = approver; } public abstract void

java设计模式4--建造者模式(Builder)

怎甘沉沦 提交于 2020-01-08 00:47:44
本文地址: http://www.cnblogs.com/archimedes/p/java-builder-pattern.html ,转载请注明源地址。 建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 概述 当系统准备为用户提供一个内部结构复杂的对象时,就可以使用生成器模式,使用该模式可以逐步地构造对象,使得对象的创建更具弹性。生成器模式的关键是将一个包含有多个组件对象的创建分成若干个步骤,并将这些步骤封装在一个称作生成器的接口中。 适用性 1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2.当构造过程必须允许被构造的对象有不同的表示时。 参与者 1.Builder 为创建一个Product对象的各个部件指定抽象接口。 2.ConcreteBuilder 实现Builder的接口以构造和装配该产品的各个部件。 定义并明确它所创建的表示。 提供一个检索产品的接口。 3.Director 构造一个使用Builder接口的对象。 4.Product 表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。 包含定义组成部件的类,包括将这些部件装配成最终产品的接口。 建造者模式的结构与使用 模式的结构中包括四种角色: •产品(Product) •抽象生成器(Builder)

设计模式--建造者模式

ぐ巨炮叔叔 提交于 2020-01-01 03:02:52
  建造者模式(builder),将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。 1 package com.sun.builder; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 /** 7 * 产品类 由多个部件组成 8 * 9 * @author sunafei 10 * 11 */ 12 public class Product { 13 List<String> parts = new ArrayList<String>(); 14 15 public void add(String part) {//添加产品部件 16 this.parts.add(part); 17 } 18 19 public void show() {//列举所有产品部件 20 System.out.println("产品创建"); 21 for (String part : parts) { 22 System.out.println(part); 23 } 24 } 25 } 1 package com.sun.builder; 2 3 /** 4 * 抽象建造者类,确定产品有两个部件组成,并声明一个得到产品建造后结果的方法getResult 5 * @author SunAFei 6 *

建造者模式

南楼画角 提交于 2020-01-01 03:01:30
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。 /** * 产品类,由多个部件组成 */ public class Product { ArrayList list = new ArrayList(); /** * 添加产品的部件 * * @param part */ public void Add(String part) { list.add(part); } public void Show() { System.out.println("\n 产品 创建 ----"); for (Object part : list) {//列举所有的产品部件 System.out.println(part); } } } /** * 抽象建造者,确定产品由两个部件组成,并声明一个得到产品建造后结果的方法 */ public abstract class Builder { public abstract void BuilderPartA(); public abstract void BuilderPartB(); public abstract Product GetResult(); } /** * 具体建造者类 */ public class

一篇文章就彻底弄懂建造者模式(Builder Pattern)

戏子无情 提交于 2019-12-27 03:34:56
转载: https://www.jianshu.com/p/3d1c9ffb0a28 背景 当一个类的内部数据过于复杂的时候(通常是负责持有数据的类,比如Config、VO、PO、Entity...),要创建的话可能就需要了解这个类的内部结构,还有这些东西是怎么组织装配等一大坨乱七八糟的东西,这个时候就会增加学习成本而且会很混乱,这个时候就想啊想一种什么法子来管理一下这个类中的数据呢,怎么在创建的时候让它按部就班的来,并且代码可读性很好别让我看花了眼啊,我要的东西也能都很好设置进来,这就是Builder模式的应用场景,Builder模式可以将一个类的构建和表示进行分离。 1.介绍 1.1什么是构建者模式 创建者模式又叫建造者模式,是将一个复杂的对象的 构建 与它的 表示 分离,使 得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。 1.2适用场景: 隔离复杂对象的创建和使用,相同的方法,不同执行顺序,产生不同事件结果 多个部件都可以装配到一个对象中,但产生的运行结果不相同 产品类非常复杂或者产品类因为调用顺序不同而产生不同作用 初始化一个对象时,参数过多,或者很多参数具有默认值 Builder模式不适合创建差异性很大的产品类 产品内部变化复杂

Java设计模式-建造者模式

本秂侑毒 提交于 2019-12-25 22:30:57
建造者模式概述 建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。它关注如何一步一步创建一个的复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好的扩展性。 建造者模式结构 ● Builder(抽象建造者):它为创建一个产品 Product 对象的各个部件指定抽象接口,在该接口中一般声明两类方法,一类方法是 buildPartX(),它们用于创建复杂对象的各个部件;另一类方法是 getResult(),它们用于返回复杂对象。Builder既可以是抽象类,也可以是接口。 ● ConcreteBuilder(具体建造者):它实现了 Builder 接口,实现各个部件的具体构造和装配方法,定义并明确它所创建的复杂对象,也可以提供一个方法返回创建好的复杂产品对象。 ● Product(产品角色):它是被构建的复杂对象,包含多个组成部件,具体建造者创建该产品的内部表示并定义它的装配过程。 ● Director(指挥者):指挥者又称为导演类,它负责安排复杂对象的建造次序,指挥者与抽象建造者之间存在关联关系,可以在其 construct() 建造方法中调用建造者对象的部件构造与装配方法

LVS中四种工作模型

£可爱£侵袭症+ 提交于 2019-12-25 19:37:10
  LVS 是 Linux Virtual Server 的简称,也就是 Linux 虚拟服务器。现在 LVS 已经是 Linux 标准内核的一部分,从 Linux2.4 内核以后,已经完全内置了 LVS 的各个功能模块,无需给内核打任何补丁,可以直接使用 LVS 提供的各种功能。 LVS 自从1998年开始,发展到现在已经是一个比较成熟的技术项目了。 一、LVS集群的工作架构: LVS 架设的服务器集群系统有三个部分组成: (1) 最前端的负载均衡层,用 Load Balancer 表示 (2) 中间的服务器集群层,用 Server Array 表示 (3) 最底端的数据共享存储层,用 Shared Storage 表示 二、LVS集群的工作机制 VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS。LVS是内核 级功能,工作在INPUT链的位置,将发往INPUT的流量进行“处理” 三、LVS集群的工作模式   1、lvs-nat:修改请求报文的目标IP,多目标的IP的DNAT   2、lvs-dr 操作封装的MAC地址   3、lvs-tun:在原请求IP报文之外新加上一个IP首部   4、lvs-fullnat:修改请求报文的源和目标IP地址 3.1、LVS的NAT模式 vs-nat:本质是多目标IP的DNAT

设计模式-建造者模式

时光总嘲笑我的痴心妄想 提交于 2019-12-24 05:26:38
建造者模式(创建型模式) 定义 建造者模式(Builder) ,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。[DP] 自己的理解: 建造者模式是把复杂得对象的构建分离出来,然后调用者不用知道对象的构建细节,只需要指定类型,就可以得到构建好的对象,且对象完整。 特点 具体产品构建出来的顺序不变 指挥者按顺序调用建造者的各个方法 产品的构建步骤被拆分成每一个方法 结构 Builder:建造者父接口 ConcreteBuilder1:具体建造者 ConcreteBuilder2:具体建造者 Director:指挥者,构建一个产品时,调用建造者的各个方法 Product:具体产品 代码 例子:一个完整的小人作为具体产品,完整的产品必须有头、身体、手、腿,构建两个不同的小人作为两个具体的建造者,创建小人的所有步骤由指挥者调用,客户端调用只需指定需要哪种小人,就可以得到完整的小人(不会缺手缺脚)。 建造者父接口 /** * @ Author :fonxi * @ Date :2019/5/24 15:59 * @ Description:创建一个Product对象的各个不见置顶的抽象接口 */ public abstract class Builder { public abstract void buildHead(); public abstract void