建造者模式

Oracle数据库的内存管理优化技巧 Oracle数据库作为企业级数据库管理系统,广泛应用于各种业务场景。内存管理是Oracle数据库性能优化的关键环节,合理的内存管理可以显著提高数据库的响应速度和吞吐量。本文的目的是深入探讨Oracle数据库内存管理的优化技巧,涵盖了系统全局区(SGA)和程序全局区(PGA)的管理、内存分配算法、内存参数调整等方面。通过详细的讲解和实际案例分析,帮助读者掌握优化Oracle数据库内存使用的方法,提高数据库的性能和稳定性。 阅读详情

1.概念

    将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 [构建与表示分离,同构建不同表示]

    与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造过程。

  建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。

  举个简单的例子,如汽车,有很多部件,车轮,方向盘,发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一部汽车,这个装配过程也很复杂(需要很好的组装技术), builder模式就是为了将部件和组装分开。

2.UML图

3.下面看下我的一个小例子

(1)先来写2个接口一个用于鸭子的飞行,一个用于鸣叫

package org.lxh.dao;
//鸭子的飞行(并不是所有的鸭子都会飞行)
public interface FlyBehavior {
  public void fly();
}

package org.lxh.dao;
//鸭子的发声(并不是所有的鸭子都会叫)
public interface QuackBehavior {
   public void quack();
}

(2)接口的实现类

package org.lxh.impl;

import org.lxh.dao.FlyBehavior;

public class FlyNoWay implements FlyBehavior{

	public void fly() {
		System.out.println("我不会飞行");
	}

}

package org.lxh.impl;

import org.lxh.dao.FlyBehavior;

public class FlyWithWings implements FlyBehavior{

	public void fly() {
	   System.out.println("我使用翅膀飞行");
	}

}

package org.lxh.impl;

import org.lxh.dao.QuackBehavior;

public class Squack implements QuackBehavior{

	
	public void quack() {
		 System.out.println("咯咯咯咯");
		
	}

}

package org.lxh.impl;

import org.lxh.dao.QuackBehavior;

public class Quack implements QuackBehavior{

	
	public void quack() {
	  System.out.println("呱呱呱呱");
		
	}

}


(3)下面便是最重要的建造工具了,这里使用的是抽象类,不适用抽象类也是可以的

package org.lxh.builder;

import org.lxh.dao.FlyBehavior;
import org.lxh.dao.QuackBehavior;

public abstract class Duck {
  //先声明2个接口分别是飞行和鸣叫
	FlyBehavior flyBeBehavior;
	QuackBehavior quackBeBehavior;
	public Duck(){
		
	}
	//鸭子具体的飞行和鸣叫
	public void showFly(){
		flyBeBehavior.fly();
	}
	public void showQuack(){
		quackBeBehavior.quack();
	}
}

(4)指导者或建造者具体的事物这里就是我们要用到的黑鸭子和蓝鸭子
package org.lxh.builder;

import org.lxh.dao.FlyBehavior;
import org.lxh.impl.FlyWithWings;
import org.lxh.impl.Quack;

public class BlackDuck extends Duck{

	public BlackDuck() {
		//黑色鸭子使用翅膀飞行
		flyBeBehavior=new FlyWithWings();
		//黑色鸭子呱呱叫
		quackBeBehavior=new Quack();
	}
    
}

package org.lxh.builder;

import org.lxh.impl.FlyNoWay;
import org.lxh.impl.FlyWithWings;
import org.lxh.impl.Quack;
import org.lxh.impl.Squack;

public class BlueDuck extends Duck{
	public BlueDuck()
	{
		//黑色鸭子使用翅膀飞行
		flyBeBehavior=new FlyNoWay();
		//黑色鸭子呱呱叫
		quackBeBehavior=new Squack();
	}
}

(5)到这里代码就写完了,下面就是我的单元测试了

package org.lxh.test;

import org.lxh.builder.BlackDuck;
import org.lxh.builder.BlueDuck;
import org.lxh.builder.Duck;


public class TestBuilder {
   @org.junit.Test
   public void TestBlack(){
	   System.out.println("我是黑鸭子============");
	   Duck duck=new BlackDuck();
	   duck.showFly();
	   duck.showQuack();
   }
   @org.junit.Test
   public void TestBlue(){
	   System.out.println("我是蓝鸭子=============");
	   Duck duck=new BlueDuck();
	   duck.showFly();
	   duck.showQuack();
   }
}

下面是运行效果图,代码大家到我的资源里找就OK了。




MYSQL、ORACLE、PostgreSQL数据库对象层次及权限管理对比 本文为出于自己扩展、比较、图形化的思维路径自行总结归纳,可能有些细节不太准确,欢迎指正。MySQL、Oracle、PostgreSQL关系型数据库都有管理员用户、用户、权限管理、表函数索引等数据库对象,schema。但在数据库对象隶属层次上有差异和相同的地方。 阅读详情

相关推荐

STRING数据库的蛋白质相互作用(PPI)网络分析

在转录调控相关的文献中,我们经常能够看到这样的蛋白质相互作用网络(protein protein interaction network,PPI network)。具体而言,这些相关的文献中首先通过RNA-seq、表达谱芯片或者蛋白质组分析等,找到了在不同分组样本间一系列的差异表达基因或蛋白。

weixin_43029125的博客 9452

接口单元测试

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34054866的博客 370

SAP FICO 消息号 FAA_POST042 技术清算科目中的余额:分类账 0L,货币 00、RMB、10000.00-

SAP FICO 消息号 FAA_POST042 技术清算科目中的余额:分类账 0L,货币 00、RMB、10000.00-

我好像病了的博客 2138

设计模式—建造者模式及实例(BuilderPattern)

建造者模式(Builder Pattern)也称生成器模式,它属于创建型模式。

小嵩的博客 4002

STM32F103结合HAL库实现蓝牙遥控四麦小车的PID闭环控制

本文详细介绍了如何使用STM32F103结合HAL库实现蓝牙遥控四麦小车的PID闭环控制。从硬件选型、电路搭建到PID算法实现与调参,全面解析了四麦小车的运动控制方案,特别强调了蓝牙通信协议设计和麦轮运动学解算的关键技术。

weixin_29169899的博客 292

Python与西门子PLC数据交互实战:基于Snap7的跨平台工业通信指南

本文详细介绍了如何使用Python和Snap7库实现与西门子PLC的数据交互。内容涵盖跨平台环境搭建、连接参数配置、数据读写实战及性能优化技巧,为工业自动化、数据采集和智能制造场景提供了一套轻量、灵活且高效的通信解决方案。

vim8coder的博客 282

建造者模式BuilderPattern

建造者模式BuilderPattern建造者模式简介应用场景:优点:缺点:典型例子:装配电脑。建造者模式结构:四大类产品类抽象建造者类具体建造者类指挥部类 建造者模式简介 一件产品/一个事物,由多个部件组成,这些部件可以自由替换,每个部件都有自己的创建过程,那么需要这个产品的客户端(使用者)可以忽略每个部件的创建过程,或者说使用者不关心你产品每个部件是如何产生的,你只要给我完整的产品就行,至于你各部件怎么建的、建好后又是如何装配成完整产品的,那是你的事,别特么让我知道,我嫌烦。 应用场景: (1) 需要生成

diezhongbing1358的博客 293

第2章-系统控制原理 -> 经典控制理论

第1章 回到目录 第3章 2 控制原理2.1 控制系统的数学模型2.1.1 时域数学模型2.1.2 复域数学模型2.2 线性系统的稳定性2.2.1 复数域稳定判据2.2.2 频率域稳定判据2.3 线性系统状态空间模型2.3.1 状态空间表达式2.3.2 状态空间系统设计2.4 李雅普诺夫稳定性分析2.4.1 李雅普诺夫稳定性2.4.2 李雅普诺夫稳定判据 2.1 控制系统的数学模型 2.1.1 时域数学模型 2.1.2 复域数学模型 2.2 线性系统的稳定性 2.2.1 复数域稳定判据 2.2....

赵继超的笔记 5550

建造者模式(BuilderPattern)

原文参考出处:https://blog.youkuaiyun.com/u010102390/article/details/80179754 介绍: 建造者模式:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可...

静风落叶的博客 221

yolov8知识蒸馏代码详解:支持logit和feature-based蒸馏

特别地,在COCO数据集上对MAP中的RetinaNet检测器(resnet50主干)获得了3.4%的性能提升,在Cityscapes数据集上, 针对mIoU指标,PSPNET(resnet-18 backbone)获得5.81%的性能提升。大部分的KD方法都是通过algin学生网络和教师网络的归一化的feature map, 最小化feature map上的激活值的差异。MGD是一种真正通用的基于特征feature的知识蒸馏方法,它可以用于各种任务,包括图像分类,目标检测,语义分割和实例分割。

@bangbang的博客 7285

RK3568平台开发系列讲解:Linux wifi的调试

查询结果中state为ENABLE,表示hostapd程序启用成功。首先查看设备是否存在。

内核笔记 165

设计模式之建造者模式(BuilderPattern)

一.意义 将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 说明:复杂对象的构建,比如一个对象有几十个成员属性,那么我们在创建这个对象,并给成员属性赋值时,就会很麻烦。采用建造者模式,就是把创建对象并给成员属性赋值的工作,分离出来,由建造者角色来完成,业务程序员直接调用导演类,获得复杂对象即可,无需再进行对象的创建工作了。 二.角色 建造者模式涉及到一下几种角色: Builder(抽象建造者):它为创建一个产品Product对象的各个部件指定抽象接口,在该接口中一般声明两类方

敲代码的小小酥的博客 415

含分布式电源的配电网三段式电流保护影响仿真研究

文章摘要 本文研究了分布式电源(DG)接入对配电网三段式电流保护的影响。通过在Matlab/Simulink平台搭建含同步发电机型DG的10kV配电网模型,设计了基于傅里叶算法的三段式电流保护模块(I段瞬时速断、II段限时速断、III段定时限过流)。研究分析了不同DG接入位置、容量及故障点对保护系统的影响机理。仿真结果表明,DG接入会改变故障电流特性,可能导致三种典型问题:保护范围扩大引起误动、保护灵敏度下降导致拒动,以及保护选择性丧失。该研究为含DG配电网的保护配置与整定提供了理论依据和仿真参考,对保障分

huanghm88的专栏 268

设计模式之建造者模式BuilderPattern(七)

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。@Data:这是Lombok中提供的Getter和Setter方法和toString方法的注解。@AllArgsConstructor:这是Lombok中提供的包含所有参数的构造方法注解。@NoArgsConstructor:这是Lombok中提供的不包含任何参数的构造方法注解。3、OrderBuilder类。1、OrderItem类。

徐泗空的博客 1331

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

设计模式——建造者模式(BuilderPattern)

建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 UML图:

雪夜&流星的专栏 571

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

您的设计模式——建造者模式【Builder Pattern】

又是一个周三,快要下班了,老大突然又拉住我,喜滋滋的告诉我“牛叉公司很满意我们做的模型, 又签订了一个合同,把奔驰、宝马的车辆模型都交给我我们公司制作了,不过这次又额外增加了一个新需 求:汽车的启动、停止、喇叭声音、引擎声音都有客户自己控制,他想什么顺序就什么顺序,这个没问题 吧?”。 看着老大殷切的目光,我还能说啥,肯定的点头, “没问题! ” ,加班加点做呗, “再苦再累就当自己二 百

454

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

设计模式建造者模式(BuilderPattern)

核心模块:Builder抽象建造者、ConcreteBuilder具体建造者、Product产品角色、Director指挥者 所有代码请访问:git@code.aliyun.com:289804201/PatternLearn.git 使用场景:构建复杂对象,或者构件过程中需要强制的分布措施; 优点:客户可以精细的控制构建过程,将产品创建过程和产品本省分离,细节依赖于

didiao11300的专栏 293

设计模式——建造者模式

又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。2)、构造者模式,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。3)、构造者模式主要解决在软件系统中,当面临一个复杂对象的创建工作时,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临剧烈的变化,但是将它们组合在一起的算法却相对稳定。

程序猿进阶 1773

生成器模式/建造者模式(BuilderPattern)

生成器模式/建造者模式(BuilderPattern):通过多个简单对象累积逐步构建成目标复杂的对象。这种设计模式属于创建型模式,提供创建对象的某种方式。 生成器模式/建造者模式的使用:在软件系统中有时候面临”某个极端复杂的对象"的创建需求,其通常由各个部分的子对象(部件对象)采用一定的算法构成;由于极端复杂需求的变化,这个极端复杂对象的各个部分经常面临着剧烈的变化,但是将各个部件组合在一起的逻辑算法却相对稳定。 基本的部件对象本身不会变但部件的组合经常变化时。 生成器(建造者)模式优点:建造者独立,易扩展

yanhaijunyan的博客 281

设计模式实现(四)建造者模式

1.什么是建造者模式(Builder Pattern) 建造者模式(Builder Pattern)又叫生成器模式,是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象,从而达到代码复用性。 建造者模式将复杂对象的构建与对象的表现分离开来,这样使得同样的构建过程可以创建出不同的表现。 2.建造者模式的优点 在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。 用户只需要给出指定复杂对象的类型和内容; 建造

WormholeStack 1278

设计模式之建造者模式【BuilderPattern】

    建造者模式属于创建型模式的一种。建造者模式主要是用于创建一个复杂的对象。使相同的创建过程可以创建不同的对象。建造者模式提供了一种创建对象的最优模式。建造者模式主要用于创建复合对象,复合对象就是某个类具有不同的属性。在一个对象的每一部分经常变化,但是将每一个对象组合起来的算法方式不变化的情况下使用建造者模式再合适不过。 话不多说,接下来看下建造者模式的实现类图: 先看下接口Ite...

董先生的远方 208

JAVA设计模式之建造者模式详解

建造者模式(builder pattern), 也被称为生成器模式, 是一种创建型设计模式.定义: 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。**建造者模式要解决的问题 **建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。

励志成为一名优秀的全能型软件开发工程师。 4281

建造者模式(BuilderPattern)

基本介绍:    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.作用:    在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。用户只需要给出指定复杂对象的类型和内容, 建造者模式负责按顺序创建复杂对象.package org.brando; /** * * 类说明: 测试类 * @author Brando 2018年3月29日 下午2:03...

BrandoLv 178

【设计模式从青铜到王者】第八篇:创建型模式之建造者模式(BuilderPattern)

系列文章目录 前言 建一栋房子总共分几步?建造者模式告诉你答案! 1.建造者模式简介 2.建造者模式结构 3.建造者模式代码实例 3.1.定义产品类House 3.2.定义建造者 3.2.1.定义抽象建造者AbstractBuilder 3.2.2.定义具体建造者 3.3.定义指挥者 3.4.客户端代码示例 3.5.效果 4.建造者模式总结 优点: 缺点: 适用环境: 总结...

森明帮大于黑虎帮的博客 345
上一篇: asp.net三层架构
下一篇: myeclipse使用xfire开发webservice
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值