学习笔记 --设计模式 part 1

深入解析安卓性能分析工具systrace/atrace的使用技巧与实战场景 本文深入解析了安卓性能分析工具systrace/atrace的核心使用技巧与实战场景。文章澄清了环境搭建的常见误区,详细拆解了命令参数,并通过列表卡顿、启动优化等具体案例,手把手指导开发者利用这些工具精准定位性能瓶颈,提升应用流畅度。 阅读详情

前言

之前看了headfirst和设计模式,总结了一下自己的理解,现记录下来以备后面查阅

设计模式列举

分类的标准为:

Created with Raphaël 2.2.0 开始 创建新对象? 创建型 结束 组装交互? 结构型 行动规则? 行为型 yes no yes no yes no
类型名称
创建型工厂、抽象工厂、生成器、原型
组合型适配器、桥接、组合、外观、装饰、代理、享元
行为型职责链、命令、迭代器、中介者、解析器、观察者、状态、备忘录、模板方法、访问者、策略

工厂模式

定义

由子类定义实例化哪个类

图例

在这里插入图片描述

代码示例

伪代码

// 要生成d
// 没用工厂
if(env=='a')
{
A a=new A();
B b=new B();
return new D(a,b);
}else{
C c=new C();
return new D(c);
}
//用了工厂
Creator fa=new FA();
Creator fb=new FB();
if(env=='a'){
return fa.make();
}else{
return fb.make();
}
//用了简单工厂
SF sf=new SF();
return sf.make(env);

好处

1 使用与创建解耦

使用者不需要知道怎么创建,只要找工厂生产就好了。

以前:我要用A->我要new A->A构建依赖B C D->我要import B C D并new B C D。
用了工厂模式:我要用A->找A工厂做一个

2 减少依赖,增加复用

同1,既然不关心创建,那么构建A的B C D我也可以不用依赖,创建的代码也封装到了工厂里面。

3 延迟决定实例化对象的时点

当要用的时候才进行实例化对象,将决定的时点从编码时期后移到运行时,那么就可以使用动态配置来决定实例化的对象类型或者参数。

抽象工厂

定义

提供一个接口创建一系列相关的对象,而不需要具体类

图例

在这里插入图片描述

代码示例

伪代码

//要d,e
//没用抽象工厂
D d;
E e;
if(f instanceof creatorD){
d=(creatorD)f.makeD();
}
if(f instanceof creatorE){
e=(creatorE)f.makeE();
}
//抽象工厂
AbstractFactory f=new FA();
D d=f.makeD();
d.e=f.makeE();

好处

1 创建方法定义与实现进一步解耦

2 动态化创建方法

3 聚合多个创建接口,适合创建有关联的产品

坏处

1 增加创建对象时,代价会增大

以前:CreatorA增加makeA1->改实现CreatorA的工厂
现在:CreatorA增加makeA1->改实现CreatorA的工厂+实现AbstractFactory的工厂

对比

抽象工厂VS工厂VS简单工厂

抽象工厂

适合创建多个有关联的产品,并且隔离不同工厂的产品

FA extends abstactFactory->生产(钢笔,墨水)
FB extends abstactFactory->生产(圆珠笔,笔芯)
怎么做都不会生产出(钢笔,笔芯)但是如果把这四样东西分成四个工厂,那么就有可能组合生产出(钢笔,笔芯)这样的错误搭配

工厂

适合生产一类产品,彼此之间有共通功能但不相关

如FA生产钢笔,FB生产铅笔,两者都能写字

简单工厂

实际上就是把创建的代码抽出封装到工厂,相比工厂和抽象工厂抽象度低,没有多态,只是形态像工厂
Google antigravity 不支持你所在地区?手把手教你把账号改成支持地区 Google antigravity功能火爆,但国内老账号根本用不了🤬本文分享几种有效的账号国家地区切换方法,最快几分钟就能让antigravity直接亮起🔥 阅读详情

相关推荐

如何用python开发“跳一跳”游戏【附源码】

jump_start_time = pygame.time.get_ticks() # 记录跳跃开始时间。jump_duration = current_time - jump_start_time # 计算跳跃持续时间。current_time = pygame.time.get_ticks() # 获取当前时间。jump_velocity = -15 # 设置跳跃的初始速度。# 如果小球跳跃结束,重置跳跃状态。# 根据跳跃持续时间计算跳跃高度。# 移除超出屏幕的障碍物。

helloshili2011的博客 2496

大话设计模式:组合模式

一、什么是组合模式 将对象组合成树状结构以表示整体和部分的层次结构 组合模式使得用户对单个对象和组合对象的使用具有一致性,提供了一种结构,允许我们忽略对象与集合之间的差别。组合模式又分为透明组合模式和安全组合模式,透明组合模式不区分树枝和树叶,安全组合模式抽象基类只保留共有部分,树枝独有的自己实现。 UML图 Component: 基类,包含添加/移除/显示的基础功能, Composite:...

weixin_44186849的博客 224

《大明王朝1566》中,朝廷财政危机无法解决的根源分析

财政困局中的财富最终流向三重黑洞:​皇室挥霍​(如嘉靖炼丹修殿)、特权阶层贪腐​(严党年入百万两盐税)、制度性损耗​(宗室供养、低效官僚)。更深层的“钱”其实是被禁锢在道德化治理的牢笼中——当国家用“黄河长江皆可为用”的权术思维替代制度性改革时,财政危机便成为帝制王朝无法逃脱的宿命。

为了小家奋斗 1968

《大话设计模式》学习笔记——part1

大话设计模式 学习笔记

rememple的博客 296

PostgreSQL和PostGIS安装、导入shp或gdb格式数据至数据库、使用QGIS测试上传PstGIS数据库操作和代码

本文详细介绍了postgresql和postgis安装步骤,并且使用postgis测试上传shp和gdb格式的矢量数据至数据库,包括步骤和代码,并使用qgis连接postgis数据查看数据库里的数据,数据依旧和本地数据一样可查看可编辑,方便后续数据底座开发和服务。

weixin_46456488的博客 1246

ESP32-S3模组上跑通esp32-camera(32)

ESP32-S3模组上跑通esp32-camera(32)

phmatthaus的专栏 772

设计模式 读书笔记 part1

设计模式(Design Pattern)是一套被反复使用的、多数人知晓的、经过分类编目的代码的总结,使用设计模式是为了可以重用代码,让代码更容易被他人理解并且提高代码的可靠性。设计模式包含模式名称、问题、解决方案和效果。模式名称方便沟通交流,见名知义。

renjh2012的博客 1093

【漏洞复现】Apache Tomcat远程代码执行漏洞(CVE-2024-56337)

CVE-2024-56337是一个存在于Apache Tomcat中的TOCTOU(Time-of-Check Time-of-Use)竞争条件漏洞。此漏洞源于对先前漏洞(CVE-2024-50379)的不完整修复。若默认servlet是可写的(参数readonly设置值为false,该设置为非默认设置)表示不区分大小写文件系统,在负载下并发读取和上传同一文件可以绕过Tomcat的大小写检查。攻击者可以通过构造恶意请求上传含恶意JSP代码的文件,使其触发解析并执行这些文件,从而导致远程代码执行。

李同學AI安全 3196

设计模式Part1——设计模式概述

设计模式概述

leikang111的博客 453

数字游民产业小报告 · 2025

2025 年全球数字游民约(不同统计口径差异很大,低估法约 4,000 万,高估法 8,000 万),美国来源占比最高。:2025 Q1 约岗位允许一定程度远程;2024 年美国员工至少部分远程(全球 2023 年约 28%)。:到 2025 年,提供数字游民/远程工作签证(媒体口径 50–73 个不等;福布斯 66、Citizen Remote 50+、有机构清单称 73)。:以英国为例,期望未来一年全勤到岗、企业因强制返岗出现离职,说明“灵活/远程”仍是劳动力市场的筹码之一。

Anthony1453的博客 1468

基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机

目录基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机项目实例1. 项目背景2. 系统架构2.1 电励磁同步电动机模型2.2 三相逆变器模型2.3 自适应控制器(Adaptive Controller)2.4 系统框图3. 模型设计3.1 创建Simulink模型3.2 自适应控制(Adaptive Control)设计3.3 仿真环境搭建4. 参数优化4.1 自动调优5. 实际应用案例5.1 工业驱动系统5.2 风力发电系统6. 结论进一步优化建议需求分析电励磁同步电动机

MHD0815的博客 266

SCEA Part 1 prepparation

 AuthorSCEA Part 1 prepparationDebopam Poddar Greenhorn Joined: Jun 21, 2005Messages: 21 posted Friday, March 06, 2009 04:24:10  Hi I have passed SCWCD 5 today with

Enjoy Life with Sun 952

【nnUNetv2进阶】四、nnUNetv2 魔改网络-小试牛刀-加入注意力机制ChannelAttention

本文介绍了在nnunet中加入ChannelAttention的方法,按照本文教的教程,可以快速完成ChannelAttention的加入和自定义模型的跑通。

AI爱好者的博客,分享计算机领域相关知识 5801

DesignPattern_AspNet_Part7

Presenter Layer Using Factory Pattern To Create Service   MVP Pattern (Modal View Presenter )     Command Pattern   1.      Http Handler Get request , constructcommand 2.      Command

我的英文站点:https://iorilan.medium.com/ 1591

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Part1_精讲设计模式_1.1 SOLID设计原则和设计模式概述

Part 1 精讲设计模式 1.1设计模式概述 ...

田宝宝的博客 424

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

GOF23种设计模式在Java中的应用(part 1)

第二部分:GOF23种设计模式在Java中的应用(part 2) 一、GOF来源及简介 1.1 GOF23种设计模式简介 《Design Patterns: Elements of Reusable Object-Oriented Software》(即后述《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides...

小蜜蜂1010的博客 1273

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Part1_精讲设计模式_基本知识点复习

Part1 精讲设计模式 基本知识点复习 ...

田宝宝的博客 462

Part1_精讲设计模式_模拟面试题QA

Part1 精讲设计模式 模拟面试题QA ...

田宝宝的博客 799

《JavaScript设计模式》阅读笔记_part1

JavaScript设计模式阅读 更多文章查看本专栏 第二章:类 1、闭包实现类 闭包可以理解为'类生成器' 闭包代码: var Book = (function(){ var bookNum = 0; function checkBook(name){ } return function(newId,ne...

weixin_34221773的博客 89

DesignPattern_AspNet_Part6

Data Access Layer   Remember : ·        Data Access Layer shall NOT contain any business logic . ·        Should ONLY access via business layer by interfaces   Patterns:   ·        Reposi

我的英文站点:https://iorilan.medium.com/ 1470

DesignPattern_AspNet_studynotes Part5

Service LayerWhen use : 1. Exchange With another system 2. There are multiple clients(PC , phone , Pad) 3. Boundary from client to server , Decide what client can do, control client behaviour 4. E...

mybwu_com的专栏 90

如何向妻子解释设计模式 How I explained Design Patterns to my wife: Part 1

译文来源:倪大虾的博客 简介 自上篇翻译《如何向妻子解释OOD》后收到了很好的反应。故特继续翻译作者的《How I explained Design Patterns to my wife: Part 1》一文,以飨读者。在此文中,作者依旧通过与妻子浅显易懂的对话,向读者解释了什么是设计模式。 设计模式是什么? Shubho:通过我们关于面向对象设计原则(OODP,即S

cc198877的专栏 991

【翻译】设计模式学习系列1---【Design Patterns Simplified: Part 1【设计模式简述:第一部分】】...

原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part1/ Design Patterns Simplified: Part 1【设计模式简述:第一部分】 Design patterns are an important consideration when...

a0103122120的博客 181

设计模式、系统设计 record part01

技术路线:工程师==》设计师==》分析师==》架构师管理路线:项目经理==》技术经理工程师:编程技术、测试技术设计师:工程师+设计技术分析师:设计师+分析技术架构师:分析师+架构技术项目经理:时间管理、风险管理、计划管理、过程管理、成本管理、人际沟通技术经理:项目经理+领导能力高级技术人才高级管理人才高级综合人才参考书推荐:head first design patterns(设计模式)大话设计模式(Java溢彩加强版)

m0_47505062的博客 1123

设计模式精解.part1

设计模式精解.part1

otzippo的专栏 151

设计模式在java中的运用---part 1

  设计模式在java中的运用读《java与模式》之一第 I 条      理解三种工厂模式,关键是工厂方法。(区分factory method和factory method pattern)【1】          简单工厂模式:又称静态工厂方法模式,其工厂方法是静态方法。    creator必须包含逻辑判断,以决定在何时,创建何种类的实例。Client只有消费

yethyeth的专栏 3543
上一篇: (工作笔记)redis开放远程访问
下一篇: kubernetes学习(一)搭建环境(vmware+ubuntu+docker)
赤月幼狼
博客等级 码龄10年 20粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赤月幼狼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值