设计模式总纲

根据设计模式的参考书 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 中所提到的,总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。当然,我们还会讨论另一类设计模式:J2EE 设计模式。

序号模式 & 描述包括
1

创建型模式
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

创建型模式抽象了实例化过程。他们帮助一个系统独立于如何创建、组合和标识它的那些对象。

一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。

  • 工厂模式(Factory Pattern)
  • 抽象工厂模式(Abstract Factory Pattern)
  • 单例模式(Singleton Pattern)
  • 建造者模式(Builder Pattern)
  • 原型模式(Prototype Pattern)
2

结构型模式
这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。

涉及到如何组合类或对象以获得更大的结构。结构型类模式采用继承机制来组合接口或实现。

一个简单例子采用多重继承方法将两个以上类组合成一个新类,如果这个类包含了所有父类的性质。

这一模式尤其有助于多个独立开发的类库协同工作。另外一个例子是类的适配模式。一般来说,适配器使得一个接口与其他接口兼容,从而给出了多个不同接口的统一抽象。维持,类适配器对一个adaptee类进行私有继承。这样,适配器可以用adaptee的接口标识它的接口。

它不是对接口或实现的组合,而是描述如何对一些对象进行组合,从而实现性功能的一些方法。因为可以在运行时改变组合关系,所以对象组合方式具有更大的灵活性,

  • 适配器模式(Adapter Pattern)
  • 桥接模式(Bridge Pattern)
  • 过滤器模式(Filter、Criteria Pattern)
  • 组合模式(Composite Pattern)
  • 装饰器模式(Decorator Pattern)
  • 外观模式(Facade Pattern)
  • 享元模式(Flyweight Pattern)
  • 代理模式(Proxy Pattern)
3

行为型模式
这些设计模式特别关注对象之间的通信。

 

行为模式涉及到算法和对象之间的职责分配。行为模式不仅描述对象和类的模式还描述他们之间的通信模式。这些模式刻画了再运行时难以跟踪的复杂控制流。他们将你的注意力从控制流转移到对象间的联系方式上来。

  • 责任链模式(Chain of Responsibility Pattern)
  • 命令模式(Command Pattern)
  • 解释器模式(Interpreter Pattern)
  • 迭代器模式(Iterator Pattern)
  • 中介者模式(Mediator Pattern)
  • 备忘录模式(Memento Pattern)
  • 观察者模式(Observer Pattern)
  • 状态模式(State Pattern)
  • 空对象模式(Null Object Pattern)
  • 策略模式(Strategy Pattern)
  • 模板模式(Template Pattern)
  • 访问者模式(Visitor Pattern)
4J2EE 模式
这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。
  • MVC 模式(MVC Pattern)
  • 业务代表模式(Business Delegate Pattern)
  • 组合实体模式(Composite Entity Pattern)
  • 数据访问对象模式(Data Access Object Pattern)
  • 前端控制器模式(Front Controller Pattern)
  • 拦截过滤器模式(Intercepting Filter Pattern)
  • 服务定位器模式(Service Locator Pattern)
  • 传输对象模式(Transfer Object Pattern)

转载于:https://www.cnblogs.com/zhangfengshi/p/9748920.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

indexOf、lastIndexOf、substring等详解

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。注意:这个方法返回的是出现的位置,是从0开始检索! 例如: hello是父字符串,ello是需要在父字符串中进行检索的子字符串,1是开始检索的位…

编码是件有逻辑的事情

勤劳是最基本的,所能做的就是花更多的时间在上面。 就算最后不能成功,尽力就好。 First . 充分清楚需求改造内容,具体到 哪个字段、逻辑处理等。 这是编码的核心,清楚了需求才能进行编码,也决定了你编码后续的测试情况…

win10 安装mysql 8.0.12

按照CSDN以及博客园的其他教程, 之前安装过几次都有或多或少的bug 主要安装步骤: 1.配置my.ini文件 2.管理员进入终端, 切换到.../bin目录下进行操作 3.指令操作: 1) mysqld --initialize --console              此指令正常情况下, 可以自动生成一项随机密码, 一…

6 月

事情很多,需一件一件去做,不急不躁。 天气飘忽不定,不带伞时就下雨,带伞时偏不下雨,猜不透少女心。 没有去看书,很快又过去一月,一年也很快。 打了场篮球,锻炼还需勤快。 遇到问…

pmd 设置默认规则,只要使用了该规则集就自动使用

pmd规则集是在rulesets的对应xml里. 之前研究pmd的时候,发现如果配置规则时使用<rule ref"rulesets/java/...xml">形式的话,该规则就怎么样都会被使用. 即便命令行参数传入的要求只调用该规则集xml里的某一个规则. 现在反过来,如果想使用某个规则集的时候,某一…

查看端口占用情况

当tomcat被占用时&#xff0c;可以使用命令行来解决占用问题&#xff1b; 打开cmd 输入netstat -ano|findstr 7001 即可找到相应的pid号 7016 再使用taskkill /f /pid 7016 就可以去除占用端口号情况。

Delphi---TServerSocket和TClientSocket发送和接收大数据包

https://www.cnblogs.com/zhangzhifeng/p/6065244.html TServerSocket和TClientSocket用非阻塞模式发送和接收比较大的数据时&#xff0c;可能一次会接收不完&#xff0c;此时需要通过循环接收。 //接收 procedure TMAINFORM.TCPServer1ClientRead(Sender: TObject;Socket: TCu…

表连接的详解

表A &#xff1a; ID NAME 1 , kobe 2 , pual 3 , tim 表B &#xff1a; ID NAME 1 , kobe 2 , pual 5 , michal 内连接&#xff1a;两表相交叉的部分 select a.ID,a.NAME,b.ID,b.NAME from A a inner join B b on a.IDb.ID; 结果为&#xff1a;1 , kobe2 , pual1 , kobe2 ,…

译:1. RabbitMQ Java Client 之 Hello World

这些教程介绍了使用RabbitMQ创建消息传递应用程序的基础知识。您需要安装RabbitMQ服务器才能完成教程 1. 打造第一个Hello World 程序 RabbitMQ是一个消息代理&#xff1a;它接受和转发消息。你可以把它想象成一个邮局&#xff1a;当你把你想要发布的邮件放在邮箱里时&#xff…

weblogic问题: Unable to resolve 'jdbc.mydb'. Resolved 'jdbc'; remaining name '

现这个是由于没有找到JNDI 解决方法&#xff1a; 在Weblogic数据源管理中的JDBC Data Source-0的设置中设置目标选项 将服务勾选上&#xff0c;如默认的&#xff1a;AdminServer 保存后即可&#xff1b;

org.xml.sax.SAXParseException: The string -- is not permitted within comments.

当我报这个错的时候&#xff0c;我时这样解决的&#xff1a; 在主目录的bin\startWebLogic.cmd中添加 set JAVA_OPTIONS-Dfile.encodingUTF-8

数据库系列之关键字

http://www.w3school.com.cn/sql/sql_distinct.asp sql_distinct转载于:https://www.cnblogs.com/PrestonL/p/9767110.html

Build path -No action available/classpath .project

从SVN download 下来的项目&#xff0c;发现的.Java 文件和平时的不一样&#xff0c;并且想加入jar 进去的时候没有Java Build Path 的选项&#xff0c;无法链接类的源码&#xff0c;项目也无法发布,这里记录分享&#xff1a; 原因是&#xff0c;在项目里面找到.project &…

Idea和redis的坑

坑1&#xff1a;直接在Idea里面&#xff0c;建TestNG的Test类时&#xff0c;里面的多线程代码&#xff0c;一直会提示报错&#xff0c;没有任何提示&#xff0c;直接就test任务结束。解决方案&#xff1a;使用main建入口的方式进行测试&#xff0c;千万不要使用testng的Test注解…

基于SpringBoot 2.0正式版的SpringCloud的微服务实战项目搭建

Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具&#xff0c;它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。 Spring Cloud包含…

StringBuffer的用法

有一次在做项目的时候&#xff0c;发现一处平时都是用String的地方&#xff0c;用上了StringBuffer。不禁疑惑&#xff0c;在网上查了一下&#xff0c;看看他们之间的区别&#xff1a; 初始化&#xff1a; StringBuffer s new StringBuffer(); 此时初始化的对象是一个空对象…

【Docker】安装tomcat并部署应用

安装tomcat 1.拉取tomcat镜像查看镜像部署应用[rootizwz99yhul3o6y7emidjqlz ~]# docker exec -it app bashrootcb526f04d30b:/usr/local/tomcat# lsBUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf include lib …

prompt set feedback set define的详解

prompt 输出后面的信息&#xff0c;类似操作系统的echo命令 SQL>prompt hello world--输出 hello world set feedback 客户端执行SQL时&#xff0c;数据库服务器都会返回反馈信息。如&#xff1a; 创建表时&#xff0c;成功的反馈信息为“Table Created”等 feedback属…

python 学习第四十七天shelve模块

shelve模块是一个简单的k&#xff0c;v将内存数据通过文件持久化的模块&#xff0c;可以持久化任何pickle可支持的python数据格式。 1&#xff0c;序列化 import shelve fshelve.open(shelve_test) names[www.96net.com.cn,"www.dc3688.com","www.baidu.com&quo…

怎么在oracle中使用for循环

测试打印语句&#xff1a; BEGIN sys.dbms_output.put_line(‘hello world’); END; DECLAREa number(20) :0; BEGINfor i in 1 .. 10 loop--insert into user (name) values(ss i); --写相关sqlsys.dbms_output.put_line(ss || i);end loop;commit; END; 详解&a…