当前位置: 首页 > wzjs >正文

自媒体时代做网站有前途吗中国化工建设协会网站

自媒体时代做网站有前途吗,中国化工建设协会网站,seo蜘蛛屯,WordPress搜索词记录Java设计模式详解 设计模式是软件开发过程中针对常见问题的经过验证的、可复用的解决方案。Java作为一种面向对象的编程语言,广泛应用各种设计模式。以下详细介绍Java中常见的23种设计模式,分为创建型、结构型和行为型三大类。 创建型模式 创建型模式关注对象的创建过程,…

Java设计模式详解

设计模式是软件开发过程中针对常见问题的经过验证的、可复用的解决方案。Java作为一种面向对象的编程语言,广泛应用各种设计模式。以下详细介绍Java中常见的23种设计模式,分为创建型、结构型和行为型三大类。

创建型模式

创建型模式关注对象的创建过程,试图将对象的创建与使用分离。

1. 单例模式 (Singleton Pattern)

定义:确保一个类只有一个实例,并提供一个全局访问点。

实现方式

  1. 饿汉式:类加载时就创建实例
public class EagerSingleton {private static final EagerSingleton instance = new EagerSingleton();private EagerSingleton() {}public static EagerSingleton getInstance() {return instance;}
}
  1. 懒汉式:延迟创建实例(线程不安全)
public class LazySingleton {private static LazySingleton instance;private LazySingleton() {}public static LazySingleton getInstance() {if (instance == null) {instance = new LazySingleton();}return instance;}
}
  1. 双重检查锁定:线程安全且高效
public class DCLSingleton {private volatile static DCLSingleton instance;private DCLSingleton() {}public static DCLSingleton getInstance() {if (instance == null) {synchronized (DCLSingleton.class) {if (instance == null) {instance = new DCLSingleton();}}}return instance;}
}
  1. 静态内部类:线程安全且延迟加载
public class StaticInnerSingleton {private StaticInnerSingleton() {}private static class SingletonHolder {private static final StaticInnerSingleton INSTANCE = new StaticInnerSingleton();}public static StaticInnerSingleton getInstance() {return SingletonHolder.INSTANCE;}
}
  1. 枚举:最简洁的实现,自动处理序列化
public enum EnumSingleton {INSTANCE;public void doSomething() {// 业务方法}
}

应用场景

  • 配置管理器
  • 线程池、连接池
  • 缓存
  • 日志记录器

Java中的应用

  • java.lang.Runtime
  • java.awt.Desktop

2. 工厂方法模式 (Factory Method Pattern)

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。

结构

  • 抽象产品
  • 具体产品
  • 抽象工厂
  • 具体工厂

示例

// 抽象产品
interface Product {void operation();
}// 具体产品
class ConcreteProductA implements Product {@Overridepublic void operation() {System.out.println("ConcreteProductA operation");}
}class ConcreteProductB implements Product {@Overridepublic void operation() {System.out.println("ConcreteProductB operation");}
}// 抽象工厂
abstract class Creator {public abstract Product createProduct();public void someOperation() {Product product = createProduct();product.operation();}
}// 具体工厂
class ConcreteCreatorA extends Creator {@Overridepublic Product createProduct() {return new ConcreteProductA();}
}class ConcreteCreatorB extends Creator {@Overridepublic Product createProduct() {return new ConcreteProductB();}
}

应用场景

  • 当一个类不知道它所需要的对象的类时
  • 当一个类希望由子类来指定它所创建的对象时
  • 当类将创建对象的职责委托给多个帮助子类中的某一个时

Java中的应用

  • java.util.Calendar.getInstance()
  • java.util.ResourceBundle.getBundle()
  • java.text.NumberFormat.getInstance()

3. 抽象工厂模式 (Abstract Factory Pattern)

定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

结构

  • 抽象产品族
  • 具体产品
  • 抽象工厂
  • 具体工厂

示例

// 抽象产品A
interface ProductA {void operationA();
}// 具体产品A1
class ConcreteProductA1 implements ProductA {@Overridepublic void operationA() {System.out.println("ProductA1 operationA");}
}// 具体产品A2
class ConcreteProductA2 implements ProductA {@Overridepublic void operationA() {System.out.println("ProductA2 operationA");}
}// 抽象产品B
interface ProductB {void operationB();
}// 具体产品B1
class ConcreteProductB1 implements ProductB {@Overridepublic void operationB() {System.out.println("ProductB1 operationB");}
}// 具体产品B2
class ConcreteProductB2 implements ProductB {@Overridepublic void operationB() {System.out.println("ProductB2 operationB");}
}// 抽象工厂
interface AbstractFactory {ProductA createProductA();ProductB createProductB();
}// 具体工厂1
class ConcreteFactory1 implements AbstractFactory {@Overridepublic ProductA createProductA() {return new ConcreteProductA1();}@Overridepublic ProductB createProductB() {return new ConcreteProductB1();}
}// 具体工厂2
class ConcreteFactory2 implements AbstractFactory {@Overridepublic ProductA createProductA() {return new ConcreteProductA2();}@Overridepublic ProductB createProductB() {return new ConcreteProductB2();}
}

应用场景

  • 系统需要独立于产品的创建、组合和表示
  • 系统需要由多个产品系列中的一个来配置
  • 强调一系列相关产品对象的设计以便进行联合使用

Java中的应用

  • javax.xml.parsers.DocumentBuilderFactory
  • javax.xml.transform.TransformerFactory
  • Spring中的BeanFactory

4. 建造者模式 (Builder Pattern)

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

结构

  • 产品
  • 抽象建造者
  • 具体建造者
  • 指挥者

示例

// 产品
class Product {private String partA;private String partB;private String partC;public void setPartA(String partA) {this.partA = partA;}public void setPartB(String partB) {this.partB = partB;}public void setPartC(String partC) {this.partC = partC;}@Overridepublic String toString() {return "Product{partA='" + partA + "', partB='" + partB + "', partC='" + partC + "'}";}
}// 抽象建造者
interface Builder {void buildPartA();void buildPartB();void buildPartC();Product getResult();
}// 具体建造者
class ConcreteBuilder implements Builder {private Product product = new Product();@Overridepublic void buildPartA() {product.setPartA("PartA");}@Overridepublic void buildPartB() {product.setPartB("PartB");}@Overridepublic void buildPartC() {product.setPartC("PartC");}@Overridepublic Product getResult() {return product;}
}// 指挥者
class Director {public Product construct(Builder builder) {builder.buildPartA();builder.buildPartB();builder.buildPartC();return builder.getResult();}
}

应用场景

  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时
  • 当构造过程必须允许被构造的对象有不同的表示时

Java中的应用

  • java.lang.StringBuilder
  • java.lang.StringBuffer
  • Lombok的@Builder注解
  • Spring的BeanDefinitionBuilder

现代Java中的实现: 流式接口(链式调用)

public class Person {private final String name;private final int age;private final String address;private Person(Builder builder) {this.name = builder.name;this.age = builder.age;this.address = builder.address;}public static class Builder {private String
http://www.dtcms.com/wzjs/812109.html

相关文章:

  • 郸城县做网站临沂做商城网站设计
  • 网站的文件夹结构贵州安顺建设局网站
  • 重庆的企业网站硬件工程师都没人干了
  • 自己怎么在电脑上做网站静态网站建设的PPT
  • 推荐 南昌网站建设wordpress手机mip
  • 北京网站建设公司降龙南京维露斯网站建设
  • 全屏展示网站图片如何做自适应淮安网站建设要多少钱
  • 定西营销型网站建设seo网站制作优化
  • 网站被清空了怎么办淘宝客网站女装模板下载
  • 池州网站建设费用免费注册公司免费注册
  • 手机端网站如何做排名好看的移动端网站
  • 南宁的网站建设wordpress应用apok主题
  • 广东省优质高职院校建设网站广东智能网站建设质量保障
  • 精品资料网站电子工程网 单片机
  • 玉溪住房和城乡建设局网站信息流广告
  • 个人建什么网站最赚钱永久免费的自助建站
  • 网站开发主流框架删除WordPress的404页面
  • 西安网站维护招聘网站维护合同范本
  • 深圳建站模板温州网站提升排名
  • wordpress站群主机如何推广自己
  • 大型网站开发 书籍o2o指的是什么
  • 做棋牌网站违法嘛企业所得税税负率
  • 物流网站查询wordpress做的好看
  • 一站式采购平台官网wordpress需要身份验证
  • 重庆专业做网站本地电脑做视频网站 外网连接不上
  • 河北平台网站建设推荐红色网站 推荐
  • 安徽区块链虚拟币网站开发价格开发公司会计工作职责
  • wordpress建站公司网站建设的原因有什么
  • 建设标准信息网站长岛网站建设费用
  • 网站建设费用计入哪个科目wordpress邮件样式美化