Java笔记(工厂模式、动态代理、XML)
创始人
2024-02-09 06:12:08
0

一、工厂模式


软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的复用性。

什么是工厂设计模式?

我们之前创建对象都是自己手动new出来的,那能不能让一个工厂帮我们造出来,然后我们直接拿来用就行。(使用new的方式创建对象会增加耦合度,无论使用什么框架, 都要减少new的使用以降低耦合度)

工厂模式(Factory Pattern)是Java中最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种获取对象的方式。

工厂模式的作用:工厂的方法可以封装对象的创建细节( 比如 为该对象进行加工和数据注入)、可以实现类与类之间的解耦操作(核心思想)。


1. 简单工厂模式


简单工厂(Simple Factory),它把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个具体子类来实例化。这样让使用者只需要关注自己需要的,而不需要关注这个东西是怎么创建的,直接拿来用就行。

// 抽象父类
public abstract class Car {private String brand; // 品牌private String color; // 颜色private int price;    // 价格//跑public abstract void run();public Car(String brand, String color, int price) {this.brand = brand;this.color = color;this.price = price;}public Car() {}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}
}
// 宾利车
public class BentleyCar extends Car {@Overridepublic void run() {System.out.println("一辆价格为:" + getPrice() + "万" + getColor() + "的" + getBrand() + "正在冒着烟的跑>>>");}
}
// 法拉利
public class FerrariCar extends Car {@Overridepublic void run() {System.out.println("一辆价格为:" + getPrice() + "万" + getColor() + "的" + getBrand() + "正在疯狂的跑>>>");}
}
//简单工厂类
public class CarFactory {/*** 静态方法:通过指定类型创建汽车对象** @param msg 汽车类型* @return 抽象类Car的子类对象*/public static Car createCar(String msg) {switch (msg) {case "binli":Car binli = new BentleyCar();binli.setBrand("宾利XXX");binli.setColor("黑色");binli.setPrice(400);return binli;case "falali":Car falali = new FerrariCar();falali.setBrand("法拉利拉法");falali.setColor("红色");falali.setPrice(500);return falali;default:System.out.println("对不起该工厂无法完成此车的创建。");return null;}}
}

测试类:

public class MyTest {public static void main(String[] args) {//通过工厂创建对象Car binli = CarFactory.createCar("binli"); binli.run();Car falali = CarFactory.createCar("falali");falali.run();}
}

在这里插入图片描述


2. 工厂方法模式



2. 抽象工厂模式



二、动态代理




三、XML文件


首先xml和properties都是文本文件,里面存的内容都是用来做配置的,可以被读取出来 。其次xml比properties功能更加丰富、结构更加清晰(使用标签,类似html)、还能嵌套使用、自定义标签等等。

1. XML概述


  • XML(全称:EXtensible Markup Language),可扩展标记语言。

    • 可扩展:标签都是自定义的,如 等等。
  • XML 它是一种标记语言,很类似 HTML,标签都是自定义的。(但是HTML就不能用自定义的标签)

  • XML的作用:用于进行存储数据和传输数据、作为软件的配置文件。

  • XML的版本:W3C(万维网联盟)在1998年2月发布1.0版本,2004年2月又发布1.1版本,但是1.1版本不能向下兼容1.0版本,所以1.1版本就没有人用。同时,在2004年2月W3C又发布了1.0版本的第三版。所以到现在用的还是1.0版本。


2. XML基本语法


  • xml文档的后缀名是.xml
  • 声明必须是第一行,即
  • 文档中有且仅有一个根标签。
  • 标签中可以定义属性,属性和标签名空格隔开,属性值必须使用引号引起来。(单双都可以,推荐用双引号)
  • 标签必须成对出现,有开始、有结束。(要成对标签、或者自闭合标签 ,如
  • 标签名称区分大小写。
  • 标签需要正确嵌套。

在这里插入图片描述

在这里插入图片描述

3. XML的组成部分


组成部分:文档声明、指令、标签、属性、文本。

1、文档声明:(写在xml文档的第一行)

  • 格式 :
  • 属性列表:
    • version:版本号,该属性是必须存在的。
    • encoding:编码方式,告诉解析引擎当前文档使用的字符集。(如果不指定编码,默认是IOS-8859-1,IDEA会自动生成UTF-8编码所以这块不用管)
    • standalone:是否独立,yes不依赖其他文件,no依赖其他文件。

2、指令(了解):结合css的。

在这里插入图片描述


3.标签:标签名称自定义的。
XML 元素必须遵循以下命名规则:

名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格


4. XML约束



5. XML解析


相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...