首页 > 编程语言 >Java设计模式

Java设计模式

时间:2023-08-24 23:35:02浏览次数:60  
标签:Java 对象 子类 创建对象 模式 工厂 创建 设计模式

装饰器模式:
装饰器模式是指在不改变现有对象结构的情况下,动态的给改对象增加一些职责(即增加其额外功能)的模式。

装饰器模式通常在以下几种情况使用。

当需要给一个现有类添加附加职责,而又不能采用生成子类的方法进行扩充时。
例如,该类被隐藏或者该类是终极类或者采用继承方式会产生大量的子类。

当需要通过对现有的一组基本功能进行排列组合而产生非常多的功能时,采用继承关系很难实现,而采用装饰器模式却很好实现。

当对象的功能要求可以动态地添加,也可以再动态地撤销

建造者模式:
建造者模式 (Builder Pattern)又称为构建者模式或生成器模式。
实际上,建造者模式的原理和代码实现非常简单,掌握起来并不难,其难点在于应用场景。
当一个对象的创建有很多条件时,可以考虑采用建造者模式


工厂模式:
工厂模式,主要用于创建对象时的一系列操作。
new 类
在我们平时创建对象的时候,一般使用New关键字来进行创建,并在构造函数里对实例化对象进行初始化。
然而个别对象在创建的时候很麻烦,可能需要对他进行一系列初始化操作,例如查询数据库,对属性赋值等等。

针对这种情况,我们可以引入 ”工厂“ 的概念,
我们不通过New关键字去创建对象了,我们直接去创建一个工厂,让工厂去帮我们创建对象。

(工厂模式通常创建类型不同但相关的对象,如:继承同一父类或接口的一组子类)

标签:Java,对象,子类,创建对象,模式,工厂,创建,设计模式
From: https://www.cnblogs.com/zcj-gh/p/17655457.html

相关文章

  • Java的三大版本
    Java的三大版本WriteOnce、RunAnywhere一次编译,到处运行JavaSE标准版(桌面程序,控制台开发),这是学习Java的基础,必须牢固掌握。JavaME嵌入式开发(手机,小家电),这个现在基本上没有人再使用,可以忽略,但是要知道有这个版本。JavaEEE企业级开发(web端,服务器开发),学习这个版本之前先要......
  • CentOS7.9搭建开发环境(Java、MySQL、Nginx、Redis)
    系统使用的阿里云CentOS7.964位SCC版。先安装个文件上传下载工具lrzsz,xshell登录终端,运行下面的命令:yuminstall-ylszrz 这是因为yum源的问题,需要修改yum配置。执行以下命令:cd/etc/yum.repos.dmvCentOS-Base.repoCentOS-Base.repo.backupwgethttp://mirrors.......
  • Java的第一课,特性和优势
    Java的特性和优势简单性面向对象可移植性高性能分布式动态性多线程安全性健壮性以上特性和优势会在以后的博客中逐一展示,尽请期待! ......
  • Java流程控制if选择结构
    if选择结构单选择结构:编程中很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程用if语句来表示,语法:if(布尔表达式){//如果条件成立,将执行的语句}例:packageshuct;importjava.util.Scanner;publicclassIfDemo01{publicstaticvoidmain(Str......
  • TypeScript(TS)JavaScript(JS)中的所有循环方法
    for循环:for(leti=0;i<array.length;i++){//循环体}for…of循环:for(constelementofarray){//循环体}forEach方法:array.forEach((element)=>{//循环体});map方法:constnewArray=array.map((element)=>{//对......
  • java基础数据类型-int类型-day02
    目录1.变量的命名2.常量3.变量4.进制4.1进制转换4.2整型数据类型1.变量的命名记住一点:不可以以数字开头类名:首字母大写的驼峰体变量名,方法名:首字母小写的驼峰体包的名字:与python语言一样全部小写2.常量整形:123实数型:3.14字符:‘a’字符串:"abc"布尔值:truefalse......
  • 《深入理解Java虚拟机》读书笔记:方法调用
      方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。在程序运行时,进行方法调用是最普遍、最频繁的操作,但前面已经讲过,Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件......
  • Tomcat与JavaWeb开发
    安装Tomcat&JDK安装时候选择tomcat软件版本要与程序开发使用的版本一致。jdk版本要进行与tomcat保持一致。准备2个linux虚拟机,一个运行nginx进行负载均衡一个用来运行tomcat第一步:安装JDKJDK官网地址:https://www.oracle.com/java/technologies/downloads/##下载JDK......
  • java List<Map>去重
    1.情景展示在实际开发中,有时我们需要对List集合当中的元素进行去重。而List当中的元素往往是对象,我们需要根据对象当中的某个或者多个属性值进行判断,才能去重。如何实现?2.具体分析在java当中,Set集合当中的元素具有唯一性。利用这一特性,我们可以完成去List集合当中的元素进......
  • Spring Data JPA查询报错java.lang.StackOverflowError hibernate SpringBoot
    toString()造成死循环,重写toString()方法现象测试JPA的多对多查询时,有一个User对象,该User有多个Role,然后报错User@Data@Entity@Table(name="user")publicclassUser{@Id//主键自动增长@GeneratedValue(strategy=GenerationType.IDENTITY)@Co......