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

23中设计模式,以及三种常见的设计模式demo

常见的23种设计模式

在这里插入图片描述

Java设计模式是软件工程中常见的解决方案,用于解决在软件设计中反复出现的问题。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。这里,我将简单介绍三种常见的设计模式,并给出相应的Java代码示例。

1. 工厂方法模式(Factory Method Pattern) - 创建型模式

工厂方法模式定义了一个用于创建对象的接口,但让子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类中进行。

示例代码

// 抽象产品类
interface Product {void use();
}// 具体产品类A
class ConcreteProductA implements Product {@Overridepublic void use() {System.out.println("Using ConcreteProductA");}
}// 具体产品类B
class ConcreteProductB implements Product {@Overridepublic void use() {System.out.println("Using ConcreteProductB");}
}// 抽象工厂类
interface Creator {Product factoryMethod();
}// 具体工厂类A
class ConcreteCreatorA implements Creator {@Overridepublic Product factoryMethod() {return new ConcreteProductA();}
}// 具体工厂类B
class ConcreteCreatorB implements Creator {@Overridepublic Product factoryMethod() {return new ConcreteProductB();}
}// 客户端代码
public class FactoryMethodDemo {public static void main(String[] args) {Creator creatorA = new ConcreteCreatorA();Product productA = creatorA.factoryMethod();productA.use();Creator creatorB = new ConcreteCreatorB();Product productB = creatorB.factoryMethod();productB.use();}
}

2. 单例模式(Singleton Pattern) - 创建型模式

单例模式确保一个类仅有一个实例,并提供一个全局访问点。

示例代码(懒汉式):

public class Singleton {// 私有静态实例,懒加载private static Singleton instance;// 私有构造函数,防止外部实例化private Singleton() {}// 提供一个全局的静态方法,返回唯一实例public static Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}// 示例方法public void someMethod() {System.out.println("SomeMethod is called");}// 客户端代码public static void main(String[] args) {Singleton singleton = Singleton.getInstance();singleton.someMethod();}
}

3. 观察者模式(Observer Pattern) - 行为型模式

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

示例代码

import java.util.ArrayList;
import java.util.List;// 抽象主题类
interface Subject {void registerObserver(Observer o);void removeObserver(Observer o);void notifyObservers();
}// 抽象观察者类
interface Observer {void update(String message);
}// 具体主题类
class ConcreteSubject implements Subject {private List<Observer> observers;private String message;public ConcreteSubject() {observers = new ArrayList<>();}@Overridepublic void registerObserver(Observer o) {observers.add(o);}@Overridepublic void removeObserver(Observer o) {observers.remove(o);}@Overridepublic void notifyObservers() {for (Observer observer : observers) {observer.update(message);}}public void setMessage(String message) {this.message = message;notifyObservers();}
}// 具体观察者类
class ConcreteObserver implements Observer {private String name;public ConcreteObserver(String name) {this.name = name;}@Overridepublic void update(String message) {System.out.println(name + " received: " + message);}
}// 客户端代码
public class ObserverDemo {public static void main(String[] args) {ConcreteSubject subject = new ConcreteSubject();Observer observer1 = new ConcreteObserver("Observer1");Observer observer2 = new ConcreteObserver("Observer2");subject.registerObserver(observer1);subject.registerObserver(observer2);subject.setMessage("Hello, Observers!");}
}

这些代码示例展示了Java中设计模式的基本应用。通过设计模式,我们可以编写出更加模块化、可重用和易于维护的代码。


http://www.mrgr.cn/news/35066.html

相关文章:

  • 一、机器学习算法与实践_04信息论与决策树算法笔记
  • 功能强大的项目管理平台通常融合多种方法论,系统化解决项目管理难点
  • 注意!2024下半年软考考试批次安排已公布
  • 理解Web3:去中心化互联网的基础概念
  • 如何开启MySQL的慢日志查询
  • 带你一文了解CISP-PTE的用处
  • 合并两个有序链表
  • 安全测试|如何使用burpsuite+xray实现联动测试
  • 2024程序员兼职赚外快方式
  • isolar-AB软件安装后打开出错,求解决办法
  • Splunk、Snort在入侵检测中的应用
  • 【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第三篇-着色器光照】
  • 共享wifi公司哪家正规合法?具体流程全公开!
  • 什么是绩效改进计划?
  • drools规则引擎
  • Linux入门学习:深刻理解计算机硬件与OS体系
  • golang strings api接口
  • Python项目的质量保证
  • 内容生态短缺,Rokid AR眼镜面临市场淘汰赛
  • 责任链模式优化 文章发布的接口(长度验证,敏感词验证,图片验证等环节) 代码,示例