/images/avatar.png

委派设计模式

应用场景

委派其实就是静态代理和策略模式一种特殊的组合,因为代理模式注重过程,而委派模式注重结果。 在我们日常开发中的spring mvc中的DispatcherServlet类就是用了委派模式,其原理就是根据用户的url在handlerMapping里面找到对应的处理类,然后委派到具体方法。在 Spring 源码中,只要以 Delegate 结尾的都是实现了委派模式。例如:BeanDefinitionParserDelegate 根据不同类型委派不同的逻辑解析 BeanDefinition。

由于不属于GOF 23种设计模式之一

  • 程序当中一般是精简程序逻辑提升代码可读性

模板设计模式

应用场景

定义一个模板结构,将具体内容延迟到子类去实现,在不改变模板结构的前提下在子类中重新定义模板中的内容。 比如JDBC;

优点

  • 提高代码复用性 将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中
  • 实现了反向控制 通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制 & 符合“开闭原则”

缺点

引入了抽象类,每一个不同的实现都需要一个子类来实现,导致类的个数增加,从而增加了系统实现的复杂度。

策略设计模式

应用场景

一个系统需要动态地在几种算法中选择一种的情况

优点

  1. 易于扩展, 增加一个新的策略只需要添加一个具体的策略类即可,基本不需要改变原有的代码,符合开闭原则;
  2. 避免使用多重条件选择语句(if else),充分体现面向对象设计思想。

代理设计模式

应用场景

为其他对象提供一种代理以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 关键:代理对象与目标对象.代理对象是对目标对象的扩展,并会调用目标对象;这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法;

静态代理

说明

静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类. 关键:在编译期确定代理对象,在程序运行前代理类的.class文件就已经存在了。

原型设计模式

应用场景

原型模式就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。 所谓原型模式,就是 Java 中的克隆技术,以某个对象为原型。复制出新的对象。显然新的对象具备原 型对象的特点,效率高(避免了重新执行构造过程步骤,而且实例的创建开销比较大或者需要输入较多参数)。

浅克隆

说明

浅复制仅仅复制所克隆的对象,而不复制它所引用的对象。 Object类提供的方法clone只是拷贝本对象,其对象内部的数组、引用对象等都不拷贝,还是指向原生对象的内部元素地址

完整安装kubernetes集群环境

1.准备基础环境

我们将使用kubeadm部署3个节点的 Kubernetes Cluster

节点详细信息:

节点主机名节点IP节点角色操作系统节点配置
k8s-master192.168.217.131masterCentOS7.62C4G
k8s-node1192.168.217.132nodeCentOS7.62C4G
k8s-node2192.168.217.133nodeCentOS7.62C4G

节点组件分布: Master 和 Node 节点由于分工不一样,所以安装的服务不同,最终安装完毕,Master 和 Node 启动的核心服务分别如下:

Master节点Node节点
kube-apiserverkube-flannel
kube-schedulerother apps
kube-proxy
etcd
coredns
kube-flannel
无特殊说明以下操作在所有节点执行: