常用设计模式

news/2024/11/29 4:38:36/
里氏替换原则:子类可以扩展父类的功能,但是不要更改父类的已经实现的方法子类对父类的方法尽量不要重写和重载。(我们可以采用final的手段强制来遵循)创建型模式
单例模式:维护线程数据安全
懒汉式
public class Test{
饿汉式
private static final Test test=new Test();
//构造私有化
private Test(){}
public static Test getInstance(){
return test;}
}饿汉式
public class Test{
饿汉式
private static Test test=null;
//构造私有化
private Test(){}
public static synchronized Test getInstance(){if (test==null) test=new Test();return test;}
}工厂模式:隐藏创建细节,实现对象的生产
public class ConnectionFactory{
public Connection create(String connectionName){
switch(connectionName){case "redis":return new RedisConnection;cases "mysql":return new MysqlConnection;default :return null;}}
}结构型模式
装饰着模式:注意.装饰者模式和静态代理模式实现一样,但是装饰者模式侧重的是类的假强,静态代理侧重的是方法的加强
interface Persion{void said();
}
class  Men implements Persion{@Overridepublic void said() {System.out.println("man said");}
}
class OldMen implements Persion {private Persion persion;public OldMen(Persion persion){this.persion=persion;}@Overridepublic void said() {persion.said();System.out.println("oldMan said");}
}代理模式(反射):
静态代理(编译后不可更改对象的行为):静态代理和装饰者模式是一样的实现方式,可以完成同样的事情,但是代理模式侧重方法的加强,而装饰者模式侧重类的加强
动态代理(动态的更改对象的行为属性)jdk动态代理cglib动态代理模式行为型模式
观察者模式:
interface Observer {//观察谁abstract void update(BeObserver beObserver);
}class BeObserver {List<Observer> list = new ArrayList<>();private int statues;public void setList(int statues) {this.statues = statues;notifyAllObserver();}public void notifyAllObserver() {list.forEach(s -> s.update(this));}
}

http://www.ppmy.cn/news/47812.html

相关文章

冯诺依曼体系结构

冯诺依曼体系结构 目录 冯诺依曼体系结构引入1、冯诺依曼体系结构1.1 内存1.2 操作系统预加载 2、操作系统2.1 理解管理2.2 系统调用接口2.3 操作系统四大基本功能 引入 冯诺依曼体系结构&#xff08;von Neumann architecture&#xff09;是现代计算机体系结构的基础&#xf…

OCR技术大揭秘:纸质文档数字化的新选择

引言 OCR&#xff08;Optical Character Recognition&#xff09;即光学字符识别技术&#xff0c;是一种将纸质或电子文档中的印刷文字转化为可编辑和可搜索的数字文本的技术。随着数字化和信息化的快速发展&#xff0c;OCR 技术逐渐成为处理大量纸质或电子文档的主要手段之一…

5款最新最实用的小软件,让你的工作和生活更轻松

我喜欢发现和分享一些好用的软件&#xff0c;我觉得它们可以让我们的工作和生活更加轻松和快乐。今天给大家介绍五款我最近发现的软件&#xff0c; GIF录制工具——Screen To Gif Screen To Gif是一款完全免费的GIF录制神器&#xff0c;可以让你轻松地录制屏幕、摄像头或画板…

Git的安装和学习使用(一)

本篇文章旨在分享本人在学习Git时的随笔记&#x1f929; 文章目录 一、Git 快速入门1.1 Git 概述1.2 SCM概述1.3 Git 安装1.3.1 软件下载1.3.2 软件安装1.3.3 软件测试 二、Git 基础使用2.1 Git 概念2.1.1 版本控制2.1.2 分布式2.1.3 系统2.1.4 区域 2.2 Git 基础指令2.2.1 Lin…

go错误处理

func test() {num1 : 10num2 : 0result : num1 / num2fmt.Println("result", result)} func main() {test()for {fmt.Println("运行完毕&#xff01; main 下面的代码")time.Sleep(time.Second)}}在默认情况下&#xff0c;当发生错误后(panic) ,程序就会…

Cookie 和 Session

文章目录 一、会话跟踪技术二、CookieCookie基本使用Cookie原理Cookie使用细节 三、SessionSession基本使用Session原理Session使用细节总结 四、实现用户登录 一、会话跟踪技术 会话&#xff1a;用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff…

自定义模型训练

文章目录 自定义模型&训练1. Define the Model2. Define Optimizer and Loss3. Evaluate Untrained Model4. Define Metrics5. Apply Gradients6. Train Loop7. Validation Loop8. Main loop 自定义模型&训练 在一些场景下&#xff0c;使用tensorflow默认的训练过程无法…

RPC通信

一、RPC通信 1、什么是RPC&#xff1f; RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;允许像调用本地服务一样调用远程服务。在整个过程中&#xff0c;RPC 会隐藏具体的通信细节。RPC是一种通信方式&#xff0c;可以通过HTTP来实现&#xff0c;也…