- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
几种常用的设计模式介绍
最早提出“设计模式”概念的是建筑设计大师亚力山大Alexander。在1970年他的《建筑的永恒之道》里描述了投计模式的发现,因为它已经存在了千百年之久,而现代才被通过大量的研究而被发现。
在《建筑的永恒之道》里这样描述:模式是一条由三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系。每一个模式描述了一个不断重复发生的问题,以及该问题解决方案的核心设计。
?
在他的另一本书《建筑模式语言》中提到了现在已经定义了253种模式。比如:
说明城市主要的结构:亚文化区的镶嵌、分散的工作点、城市的魅力、地方交通区
住宅团组:户型混合、公共性的程度、住宅团组、联排式住宅、丘状住宅、老人天地室内环境和室外环境、阴和阳总是一气呵成
针对住宅:夫妻的领域、儿童的领域、朝东的卧室、农家的厨房、私家的沿街露台、个人居室、起居空间的序列、多床卧室、浴室、大储藏室
针对办公室、车间和公共建筑物:灵活办公空间、共同进餐、共同小组、宾至如归、等候场所、小会议室、半私密办公室
?
尽管亚力山大的著作是针对建筑领域的,但他的观点实际上适用于所有的工程设计领域,其中也包括软件设计领域。“软件设计模式”,这个术语是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中来的。目前主要有23种。
?
创建对象时,不再由我们直接实例化对象;而是根据特定场景,由程序来确定创建对象的方式,从而保证更大的性能、更好的架构优势。创建型模式主要有简单工厂模式(并不是23种设计模式之一)、工厂方法、抽象工厂模式、单例模式、生成器模式和原型模式。
用于帮助将多个对象组织成更大的结构。结构型模式主要有适配器模式adapter、桥接模式bridge、组合器模式component、装饰器模式decorator、门面模式、亨元模式flyweight和代理模式proxy。
用于帮助系统间各对象的通信,以及如何控制复杂系统中流程。行为型模式主要有命令模式command、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式state、策略模式、模板模式和访问者模式。
有些时候,允许自由创建某个类的实例没有意义,还可能造成系统性能下降。如果一个类始终只能创建一个实例,则这个类被称为单例类,这种模式就被称为单例模式。
??? 一般建议单例模式的方法命名为:getInstance(),这个方法的返回类型肯定是单例类的类型了。getInstance方法可以有参数,这些参数可能是创建类实例所需要的参数,当然,大多数情况下是不需要的
publicclass?Singleton {
???
????publicstaticvoid?main(String[] args)
????{
???????//创建Singleton对象不能通过构造器,只能通过getInstance方法
???????Singleton s1 = Singleton.getInstance();
???????Singleton s2 = Singleton.getInstance();
???????//将输出true
???????System.out.println(s1 == s2);
????}
???
????//使用一个变量来缓存曾经创建的实例
????privatestatic?Singleton?instance;
????//将构造器使用private修饰,隐藏该构造器
????private?Singleton(){
???????System.out.println(Singleton被构造!);
????}
???
????//提供一个静态方法,用于返回Singleton实例
????//该方法可以加入自定义的控制,保证只产生一个Singleton对象
????publicstatic?Singleton getInstance()
????{
???????//如果instance为null,表明还不曾创建Singleton对象
???????//如果instance不为null,则表明已经创建了Singleton对象,将不会执行该方法
???????if?(instance?==?null)
???????{
???????????//创建一个Singleton对象,并将其缓存起来
???????????instance?=?new?Singleton();
???????}
???????returninstance;
????}
} 单例模式主要有如下两个优势:
1)??????减少创建Java实例所带来的系统开销
2)??????便于系统跟踪单个Java实例的生命周期、实例状态等。
?
简单工厂模式是由一个工厂对象
您可能关注的文档
最近下载
- 2025青岛上合产投控股集团有限公司公开招聘(14人)笔试备考试题及答案详解(夺冠).docx VIP
- 2025-2026新版部编人教版小学3三年级语文上册(全册)教案设计.doc
- 2025青岛上合产投控股集团有限公司公开招聘(14人)笔试备考试题及答案详解(考点梳理).docx VIP
- 口腔科冠调合知情同意书.docx
- 山东省临沂市费县2024-2025学年九年级上学期期中考试数学试题(含答案).pdf VIP
- 16111(1118修改)柔性掩护支架采煤作业规程.doc
- 2025青岛上合产投控股集团有限公司公开招聘(14人)笔试备考试题及答案详解参考.docx VIP
- 高效液相色谱法测定奶粉中三聚氰胺的含量.docx VIP
- YY_T 1268-2023 环氧乙烷灭菌的产品追加和过程等效.docx VIP
- 2025青岛上合产投控股集团有限公司公开招聘(14人)笔试备考试题及答案详解一套.docx VIP
原创力文档


文档评论(0)