`

think pattern in java 笔记1

    博客分类:
  • j2se
阅读更多

模式概念:

模式是帮助你从别人的成功经验而不是从自己的失败经验哪里学习更多的东西!!!!!

什么是模式???

模式体现的是程序整体的结构构架!!!

模式即增加一个抽象层。无论什么时候,当你想把某些东西抽象出来的时候,实际上你是在分离特定的细节,这么做的一个有说服力的动机就是把变化的东西从那些不变的东西里分离出来.

设计模式的目的就是为了把代码里变化的那一部分分离出来.........

 

模式的分类:

1.创建型:如何创建一个对象,这通常包括分离对象的创建细节,这样的代码创建对象是就不依赖于创建对象的类型,而且加入新的对象,也不必改写代码!!!!!! Singleton,Factory Method ,Prototype,

2.结构型:设计出满足某些工程里特定约束的对象.他的工作原理是:一组对象和其他对象发生关联,当系统发生变化的时候,这些对象之间的关联关系保持不变!!!

3.行为型:指一个程序里处理一些列特定操作类型的对象.他们封装了一些列的操作!!!封装操作 observer , visitor, iterator , interpreting,

 

开发面临的挑战

UML过程,极限编程(xp)

 

 

简化(simplifying idoms)

信使(messager)

最普通的方法就是通过信使,他简单的将信息打包成一个对象,用于传输,而不是将这些信息碎片单独传输!!!!

集合型参数(collecting parameter)

collecting parameter 是messenger的兄弟,messagener传递参数给一个方法,而collecting parameter是从一个方法中获取信息.一般情况是collecting parmeter 传给多个方法(multipart method)的情况下!!!! collecting parameter必须支持通过某些方法来设置或者插入一些值,其collecting 参数是由他传递给的方法来修改!!!

对象数量(object quantity)

这里描述的两个模式都是可以单独用来控制对象的数量!!!

 

单件(singleton):提供一种方法,使得某一特定类型只存在一个,并且只能是一个对象:

单件的目标:防止用户可以以其他方式来创建对象,而且只能用你所提供的方式来创建对象.

类创建private私有,类类型final,通过公共方法返回类的引用对象.

 

对象池(object pool):没有限制只能创建一个对象.这种技术同样适用于创建固定数量的对象,当时这种情况下,你就可以得面对如何共享对象池里的对象这种问题.

 

对象去耦(object decoupling)

代理模式(proxy)和状态模式(state)分别提供了共我们使用的代理类(surrogate class);真正干活的那个累被代理类隐藏了.当我们调用代理类的一个方法时,代理类只是简单的调用实现类(implementing class)的方法.这两个模式的基本概念非常简单:代理类和实现类都由同一个基类派生 出来..

代理:替另外一个对象打点一切...

动态代理类; invocation handler 的实现应该是和动态创建的代理对象所提供的那些接口完全无关的.!!!1

状态模式:改变对象的行为;

一个用来改变类的(状态的)对象;

proxy模式的一般应用:

1.远程代理(remote proxy)为一个对象在不同的地址空间提供局部代理.

2.虚代理(virtual proxy ) 根据需求,在创建复杂对象时,使用"延时初始化"(lazy initialization)

3.保护代理(protection proxy)用于不希望客户端程序员完全控制被代理对象(proxied boject)的情况下;

4.智能代理(smart reference)当访问被代理对象时提供额外的动作时...

 

 

迭代器:分离算法和容器

用迭代器写的任何代码都与它所操作的数据结构相分离,这样一来,这些代码就更为通用和易于重用....

 

 

 

 

 

 

 

分解公用性(factoring commonality)

应用一次且只能有一次的原则产生最基本的模式,将变化的那部分代码放到方法里...

 

策略模式(stategy):运行时刻选择算法;

Policy模式:泛化的strategy模式:

用strategy模式处理一个方法(变化)的情况,而用policy模式处理多个方法...

 

模板模式:(template method):是应用程序框架的一个基本概念....

一个重要的特征:他是在基类里定义的,而且不能够被(派生类)更改,有时候他是私有方法(private method),但实际上他经常被声明为final;

 

 

封装创建(encapsulating creating)

强制使用一个通用工厂(common factory)来创建对象,而不允许创建对象的代码分散在整个系统里.----把创建集中在一起处理.....

 

简单工厂方法(simple factory method):

静态的factory()方法使得所用创建对象的操作都集中在一个地方完成,这也就是唯一需要修改代码的地方...

 

多态工厂(Polymorphic factories)

抽象工厂(abstract factory)模式:基本思想:在创建工厂对象的地方,有你来决定如何使用该工厂对象来创建那些对象!!!

 

 

特化创建(specialized creation)

原型模式(prototype)

通过克隆某个原型的实例来创建对象.

 

生成器(Builder)

builder模式的目的是为了将对象的构造与它的表示(representation)分离开来,这样对象据可以有多个不同的表示.对象构造的过程保持不变,但是最终创建的对象可以有不同的表示.

 

太多(too many )

享元模式(Flyweight):太多对象 62页

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    cmd-bat-批处理-脚本-IE主页修改.zip

    cmd-bat-批处理-脚本-IE主页修改.zip

    Delphi 12.3控件之uniGUI-Extras-1.95.0.1600.rar

    Delphi 12.3控件之uniGUI-Extras_1.95.0.1600.rar

    【数据库安全】MySQL中SQL注入攻击原理与防御措施:提升Web应用安全性设计在MySQL环境下SQL

    内容概要:本文主要介绍了SQL注入的概念、危害及其防范措施。SQL注入是攻击者通过恶意构造输入,使服务器执行非预期的SQL命令的一种攻击方式,常因用户输入未

    ORON1.SHX

    使用方法:拷贝到Auto CAD的Fonts下

    cmd-bat-批处理-脚本-维护版.zip

    cmd-bat-批处理-脚本-维护版.zip

    esp-idf-extension.vsix zip

    解压

    【数据库管理】MySQL命令大全:涵盖数据库与数据表操作及事务管理的常用指令集

    内容概要:本文档为《mysql.docx》,主要汇总了MySQL的各类常用命令,分为基础命令、数据库相关命令、数据表相关命令和事务相关命令四大部分。基础命令涵盖了连接、创建、删除数据库,创建和删除表,插入、查询、更新、删除数据等基本操作;数据库相关命令则进一步细化了对数据库的管理操作,如修改编码格式、查看数据库详细信息等;数据表相关命令着重介绍了对表结构和数据的操作,包括创建、修改、删除表,添加、删除、修改列,创建和删除索引等;事务相关命令主要涉及事务的开始、提交、回滚,设置事务隔离级别,以及表的锁定与解锁操作。; 适合人群:适用于具有一定SQL基础,尤其是MySQL使用经验的数据库管理员或开发人员。; 使用场景及目标:①帮助用户快速查找并正确使用MySQL的各种命令;②提高用户对MySQL数据库的操作能力,包括但不限于数据库和表的创建、修改、删除,数据的增删改查等;③掌握MySQL事务处理机制,确保数据的一致性和完整性。; 其他说明:本文档是MySQL命令的集合,建议用户在实际操作前先熟悉各个命令的具体用法,并在测试环境中进行练习,避免误操作导致数据丢失或其他严重后果。

    cmd-bat-批处理-脚本-交换两个变量的值而不使用临时变量.zip

    cmd-bat-批处理-脚本-交换两个变量的值而不使用临时变量.zip

    软件工程集成测试全流程解析:确保软件模块协同工作的关键方法与实践

    内容概要:集成测试是确保软件质量的关键环节,它在单元测试基础上验证模块间的交互和协作。文章详细介绍了集成测试的目的、重要性、流程步骤、策略与方法以及常见问题的解决办法。集成测试不仅验证模块接口的正确性,还确保系统的整体功能和性能符合预期。文章通过一个电商系统的实际案例,展示了集成测试在发现和解决问题中的具体应用。最后,展望了集成测试未来的发展趋势,如自动化测试、云计算、大数据和人工智能技术的应用。 适合人群:软件开发人员、测试工程师、项目经理及相关技术人员。 使用场景及目标:①了解集成测试在整个软件开发生命周期中的作用和重要性;②掌握集成测试的详细流程,包括测试计划制定、环境搭建、用例设计、执行与记录、缺陷管理和回归测试、测试总结与报告;③学习集成测试的不同策略(自顶向下、自底向上、混合策略)和方法(黑盒测试、白盒测试、模拟测试),并理解其适用场景;④掌握常见问题(接口不匹配、数据传递错误、性能瓶颈)的解决办法。 其他说明:本文不仅提供了集成测试的理论知识,还结合实际案例进行详细讲解,帮助读者更好地理解和应用集成测试技术。未来集成测试将受益于自动化测试、云计算、大数据和人工智能技术的发展,测试人员应不断学习新技术,优化测试流程,提高软件质量和效率。

    cmd脚本-bat批处理-快速设定分辨率.zip

    cmd脚本-bat批处理-快速设定分辨率.zip

    高阶过采样delta-sigma DAC设计.pdf### 高阶过采样 delta-sigma DAC设计

    内容概要:本文献为电子科技大学硕士学位论文,题目为“高阶过采样delta-sigma DAC设计”。论文首先介绍了DAC的基本概念及其多种结构,重点阐述了delta-sigma DAC的优势,包括实现24位以上量化精度、简化模拟部分设计等。接着详细探讨了delta-sigma DAC的核心组成部分——过采样和噪声整形。过采样部分采用8倍插值8倍采样保持结构,其中插值器由2倍和4倍插值器级联构成;噪声整形部分采用5阶结构,优化了零点和极点,形成前馈加局部振荡反馈的噪声整形环。论文还介绍了在Matlab中完成的数字模型和FPGA平台上实现的硬件设计,最终实现了16位数据位宽、信噪比为95.53dB的delta-sigma DAC。 适合人群:具备一定电子工程和数字信号处理基础,特别是对DAC设计感兴趣的研究生或研究人员。 使用场景及目标:①适用于研究高精度数模转换技术的学术机构;②为设计高阶过采样delta-sigma DAC提供理论和技术支持;③探索delta-sigma技术在音频和其他高精度应用领域的潜力。 阅读建议:此资源不仅涉及复杂的理论分析,还包括详细的硬件实现步骤,建议读者在理解基本概念的基础上逐步深入,结合Matlab仿真和FPGA实现进行实践,以加深对delta-sigma DAC设计的理解。

    cmd-bat-批处理-脚本-弹出对话框.zip

    cmd-bat-批处理-脚本-弹出对话框.zip

    基于MATLAB实现的ARIMA模型代码示例

    提供一个ARIMA模型的MATLAB代码示例,该代码能够根据用户自身的具体需求灵活调整参数,从而达到预期的分析效果。

    cmd-bat-批处理-脚本-倒记时(全屏).zip

    cmd-bat-批处理-脚本-倒记时(全屏).zip

    ssm+vue图书管理系统全套源码+毕业论文+数据库sql

    ssm+vue图书管理系统全套源码+毕业论文+数据库sql,全套毕设,非常具有参考意义

    cmd-bat-批处理-脚本-更改电源管理方式.zip

    cmd-bat-批处理-脚本-更改电源管理方式.zip

    cmd-bat-批处理-脚本-禁止用XP的图片视频预览功能.zip

    cmd-bat-批处理-脚本-禁止用XP的图片视频预览功能.zip

    i.MX93实现搭建部署ONNX框架【AI项目实战】

    i.MX93外设驱动程序,一分价钱一分货,项目代码可顺利编译运行~

    cmd-bat-批处理-脚本-显示进度.zip

    cmd-bat-批处理-脚本-显示进度.zip

    企业生命周期数据集1999-2023(基于现金流组合).txt

    文件“企业生命周期数据集1999-2023(基于现金流组合).txt”提供了一个涵盖长达24年的企业数据集,专注于企业不同发展阶段的现金流特征。该数据集以文本格式保存,并通过百度网盘作为存储介质,便于用户下载和分析。具体来看,该数据集可能包括了企业从初创、成长、成熟到衰退等不同生命周期阶段的现金流情况,涉及的关键数据可能包含现金流的流入、流出、净额以及与企业财务健康状况和运营效率紧密相关的其他财务指标。 从数据集的命名和描述中可以推测,数据集中包含的企业财务信息是基于现金流的视角来构建的,这有助于研究人员、投资者和决策者从现金流的角度理解企业的经营状态和生命周期。现金流作为衡量企业运营绩效的重要指标,能够反映出企业的真实经营状况,尤其是在评估企业长期可持续性方面具有不可替代的作用。因此,该数据集对于研究企业生命周期理论、财务健康、投资策略等领域具有重要的参考价值。 文件提供的百度网盘链接和提取码,意味着数据集的获取方式是通过网络共享服务进行的。通过这种方式,用户可以不受地域限制,随时随地通过网络获取和使用这些数据。值得注意的是,文件内信息表明,提供的链接和提取码是永久有效的,并承诺一旦失效,将会及时补充更新,这体现了数据提供方对于数据持久性和可靠性的保证。 由于文件内容没有提供具体的数据样例或更详细的数据结构描述,无法得知该数据集具体包含哪些字段和指标,这些可能涉及企业的基本财务数据、现金流相关指标、企业规模、行业分类等。不过,文件提供的下载途径和数据集的时间跨度已经足够表明其潜在的广泛应用场景。 该数据集为企业生命周期研究提供了一项宝贵的数据资源,覆盖了从1999年至2023年的长期数据,能够为分析企业的长期财务表现和生命周期特征提供坚实的数据支持。对于学术研究、企业战略规划、金融分析等领域而言,这是一份不可多得的参考资料。

Global site tag (gtag.js) - Google Analytics