- 浏览: 119562 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (135)
- java (135)
- [转]c# 画圆角矩形 (1)
- 设计模式生活实例 (1)
- .nET2.0小技巧 (1)
- 从另一个角度看敏捷实践(一)--IPM:承诺的仪式 (1)
- javascript字符串转json对象 (1)
- 使用BeanUtils时,Date类型值为空的解决方法 (1)
- Lenovo V460+Ubuntu 11.10 无线网问题 (1)
- Lucene 索引和搜索过程核心类详解 (1)
- Android短信编解码方式 (1)
- 股神巴菲特十大致富秘籍 (1)
- Map遍历的三种方法 (1)
- Android中用Toast.cancel()方法优化toast内容的显示 (1)
- ViewFlipper “Receiver not registered” Error (1)
- javax.xml.transform.TransformerFactoryConfigurationError (1)
- JNI调用的注意事项 (1)
- JUnit单元测试感悟 (1)
- 用C#写定时关机的程序 (1)
- ASP.NET开发工具Web Matrix介绍 (1)
- MapXtreme2004代码 MapControl控件中显示地图文件 (1)
- 《使用 Microsoft .NET 的企业解决方案模式》读书笔记3 (1)
- 微创短信开发平台 (1)
- 谈谈Q+平台的技术实现 (1)
- 手机防盗软件实现(源码) (1)
- 虚析构函数(总结 帖子) (1)
- c语言中去除const修饰 (1)
- ORA-01012: not logged on 解决办法 (1)
- paypal提现如何省钱 (1)
- 数独suduku (1)
- MyISAM InnoDB 区别 (1)
- 随 笔 (1)
- Android上的log,日志相关 (1)
- 百度质量部实习居然通过了~ (1)
最新评论
-
野狐禅:
ext.get('imagebrowse') is null
ExtJs上传图片预览功能 -
zhuyl_wind:
不切实际,呵呵
[]5年内买车买房-理财篇 -
in南京:
关键你那两千块钱就够交一个多月的房租!换个城市你那六百也远远不 ...
[]5年内买车买房-理财篇 -
javac_xinyun:
呵呵,看完了,确实不错,貌似第一年的房租每月算进去 ,人际关系 ...
[]5年内买车买房-理财篇 -
dishikun:
貌似很不错,就是没把房租算进去!
[]5年内买车买房-理财篇
官网参考:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns
creational patterns
abstract factory (recognizeable by creational methods returning an abstract/interface type)
* java.util.calendar#getinstance()
* java.util.arrays#aslist()
* java.util.resourcebundle#getbundle()
* java.net.url#openconnection()
* java.sql.drivermanager#getconnection()
* java.sql.connection#createstatement()
* java.sql.statement#executequery()
* java.text.numberformat#getinstance()
* java.lang.management.managementfactory (all getxxx() methods)
* java.nio.charset.charset#forname()
* javax.xml.parsers.documentbuilderfactory#newinstance()
* javax.xml.transform.transformerfactory#newinstance()
* javax.xml.xpath.xpathfactory#newinstance()
builder (recognizeable by creational methods returning the instance itself)
* java.lang.stringbuilder#append() (unsynchronized)
* java.lang.stringbuffer#append() (synchronized)
* java.nio.bytebuffer#put() (also on charbuffer, shortbuffer, intbuffer, longbuffer, floatbuffer and doublebuffer)
* javax.swing.grouplayout.group#addcomponent()
* all implementations of java.lang.appendable
factory method (recognizeable by creational methods returning a concrete type)
* java.lang.object#tostring() (overrideable in all subclasses)
* java.lang.class#newinstance()
* java.lang.integer#valueof(string) (also on boolean, byte, character, short, long, float and double)
* java.lang.class#forname()
* java.lang.reflect.array#newinstance()
* java.lang.reflect.constructor#newinstance()
prototype (recognizeable by creational methods returning a different instance of itself with the same properties)
* java.lang.object#clone() (the class has to implement java.lang.cloneable)
singleton (recognizeable by creational methods returning the same instance (usually of itself) everytime)
* java.lang.runtime#getruntime()
* java.awt.desktop#getdesktop()
structural patterns
adapter (recognizeable by creational methods taking an instance of different abstract/interface type and returning an implementation of own/another abstract/interface type which decorates/overrides the given instance)
* java.io.inputstreamreader(inputstream) (returns a reader)
* java.io.outputstreamwriter(outputstream) (returns a writer)
* javax.xml.bind.annotation.adapters.xmladapter#marshal() and #unmarshal()
bridge (recognizeable by creational methods taking an instance of different abstract/interface type and returning an implementation of own abstract/interface type which delegates/uses the given instance)
* none comes to mind yet. a fictive example would be new linkedhashmap(linkedhashset<k>, list<v>) which returns an unmodifiable linked map which doesn't clone the items, but uses them. the java.util.collections#newsetfrommap() and singletonxxx() methods however comes close.
composite (recognizeable by behavioral methods taking an instance of same abstract/interface type)
* java.util.map#putall(map)
* java.util.list#addall(collection)
* java.util.set#addall(collection)
* java.nio.bytebuffer#put(bytebuffer) (also on charbuffer, shortbuffer, intbuffer, longbuffer, floatbuffer and doublebuffer)
* java.awt.container#add(component) (practically all over swing thus)
decorator (recognizeable by creational methods taking an instance of same abstract/interface type)
* all subclasses of java.io.inputstream, outputstream, reader and writer have a constructor taking an instance of same type.
* almost all implementations of java.util.list, set and map have a constructor taking an instance of same type.
* java.util.collections, the checkedxxx(), synchronizedxxx() and unmodifiablexxx() methods.
* javax.servlet.http.httpservletrequestwrapper and httpservletresponsewrapper
facade (recognizeable by behavioral methods which internally uses instances of different independent abstract/interface types)
* javax.faces.context.facescontext, it internally uses among others the abstract/interface types lifecycle, viewhandler, navigationhandler and many more without that the enduser has to worry about it (which are however overrideable by injection).
* javax.faces.context.externalcontext, which internally uses servletcontext, httpsession, httpservletrequest, httpservletresponse, etc.
flyweight (recognizeable by creational methods returning a cached instance, a bit the "multiton" idea)
* java.lang.integer#valueof(int) (also on boolean, byte, character, short, long, float and double)
proxy (recognizeable by creational methods which returns an implementation of given abstract/interface type which in turn delegates/uses a different implementation of given abstract/interface type)
* java.lang.reflect.proxy
* java.rmi.*, the whole api actually.
behavioral patterns
chain of responsibility (recognizeable by behavioral methods which (indirectly) invokes the same method in another implementation of same abstract/interface type in a queue)
* java.util.logging.logger#log()
* javax.servlet.filter#dofilter()
command (recognizeable by behavioral methods in an abstract/interface type which invokes a method in an implementation of a different abstract/interface type which has been encapsulated by the command implementation during its creation)
* all implementations of java.lang.runnable
* all implementations of javax.swing.action
interpreter (recognizeable by behavioral methods returning a structurally different instance/type of the given instance/type; note that parsing/formatting is not part of the pattern, determining the pattern and how to apply it is)
* java.util.pattern
* java.text.normalizer
* all subclasses of java.text.format
* all subclasses of javax.el.elresolver
iterator (recognizeable by behavioral methods sequentially returning instances of a different type from a queue)
* all implementations of java.util.iterator (thus among others also java.util.scanner!).
* all implementations of java.util.enumeration
mediator (recognizeable by behavioral methods taking an instance of different abstract/interface type (usually using the command pattern) which delegates/uses the given instance)
* java.util.timer (all schedulexxx() methods)
* java.util.concurrent.executor#execute()
* java.util.concurrent.executorservice (the invokexxx() and submit() methods)
* java.util.concurrent.scheduledexecutorservice (all schedulexxx() methods)
* java.lang.reflect.method#invoke()
memento (recognizeable by behavioral methods which internally changes the state of the whole instance)
* java.util.date (the setter methods do that, date is internally represented by a long value)
* all implementations of java.io.serializable
* all implementations of javax.faces.component.stateholder
observer (or publish/subscribe) (recognizeable by behavioral methods which invokes a method on an instance of another abstract/interface type, depending on own state)
* java.util.observer/java.util.observable (rarely used in real world though)
* all implementations of java.util.eventlistener (practically all over swing thus)
* javax.servlet.http.httpsessionbindinglistener
* javax.servlet.http.httpsessionattributelistener
* javax.faces.event.phaselistener
state (recognizeable by behavioral methods which changes its behaviour depending on the instance's state which can be controlled externally)
* all implementations of java.util.iterator
* javax.faces.lifecycle.lifecycle#execute() (controlled by facesservlet, the behaviour is dependent on current phase (state) of jsf lifecycle)
strategy (recognizeable by behavioral methods in an abstract/interface type which invokes a method in an implementation of a different abstract/interface type which has been passed-in as method argument into the strategy implementation)
* java.util.comparator#compare(), executed by among others collections#sort().
* javax.servlet.http.httpservlet, the service() and all doxxx() methods take httpservletrequest and httpservletresponse and the implementor has to process them (and not to get hold of them as instance variables!).
* javax.servlet.filter#dofilter()
template method (recognizeable by behavioral methods which already have a "default" behaviour definied by an abstract type)
* all non-abstract methods of java.io.inputstream, java.io.outputstream, java.io.reader and java.io.writer.
* all non-abstract methods of java.util.abstractlist, java.util.abstractset and java.util.abstractmap.
* javax.servlet.http.httpservlet, all the doxxx() methods by default sends a http 405 "method not allowed" error to the response. you're free to implement none or any of them.
visitor (recognizeable by two different abstract/interface types which has methods definied which takes each the other abstract/interface type; the one actually calls the method of the other and the other executes the desired strategy on it)
* javax.lang.model.element.annotationvalue and annotationvaluevisitor
* javax.lang.model.element.element and elementvisitor
* javax.lang.model.type.typemirror and typevisitor
creational patterns
abstract factory (recognizeable by creational methods returning an abstract/interface type)
* java.util.calendar#getinstance()
* java.util.arrays#aslist()
* java.util.resourcebundle#getbundle()
* java.net.url#openconnection()
* java.sql.drivermanager#getconnection()
* java.sql.connection#createstatement()
* java.sql.statement#executequery()
* java.text.numberformat#getinstance()
* java.lang.management.managementfactory (all getxxx() methods)
* java.nio.charset.charset#forname()
* javax.xml.parsers.documentbuilderfactory#newinstance()
* javax.xml.transform.transformerfactory#newinstance()
* javax.xml.xpath.xpathfactory#newinstance()
builder (recognizeable by creational methods returning the instance itself)
* java.lang.stringbuilder#append() (unsynchronized)
* java.lang.stringbuffer#append() (synchronized)
* java.nio.bytebuffer#put() (also on charbuffer, shortbuffer, intbuffer, longbuffer, floatbuffer and doublebuffer)
* javax.swing.grouplayout.group#addcomponent()
* all implementations of java.lang.appendable
factory method (recognizeable by creational methods returning a concrete type)
* java.lang.object#tostring() (overrideable in all subclasses)
* java.lang.class#newinstance()
* java.lang.integer#valueof(string) (also on boolean, byte, character, short, long, float and double)
* java.lang.class#forname()
* java.lang.reflect.array#newinstance()
* java.lang.reflect.constructor#newinstance()
prototype (recognizeable by creational methods returning a different instance of itself with the same properties)
* java.lang.object#clone() (the class has to implement java.lang.cloneable)
singleton (recognizeable by creational methods returning the same instance (usually of itself) everytime)
* java.lang.runtime#getruntime()
* java.awt.desktop#getdesktop()
structural patterns
adapter (recognizeable by creational methods taking an instance of different abstract/interface type and returning an implementation of own/another abstract/interface type which decorates/overrides the given instance)
* java.io.inputstreamreader(inputstream) (returns a reader)
* java.io.outputstreamwriter(outputstream) (returns a writer)
* javax.xml.bind.annotation.adapters.xmladapter#marshal() and #unmarshal()
bridge (recognizeable by creational methods taking an instance of different abstract/interface type and returning an implementation of own abstract/interface type which delegates/uses the given instance)
* none comes to mind yet. a fictive example would be new linkedhashmap(linkedhashset<k>, list<v>) which returns an unmodifiable linked map which doesn't clone the items, but uses them. the java.util.collections#newsetfrommap() and singletonxxx() methods however comes close.
composite (recognizeable by behavioral methods taking an instance of same abstract/interface type)
* java.util.map#putall(map)
* java.util.list#addall(collection)
* java.util.set#addall(collection)
* java.nio.bytebuffer#put(bytebuffer) (also on charbuffer, shortbuffer, intbuffer, longbuffer, floatbuffer and doublebuffer)
* java.awt.container#add(component) (practically all over swing thus)
decorator (recognizeable by creational methods taking an instance of same abstract/interface type)
* all subclasses of java.io.inputstream, outputstream, reader and writer have a constructor taking an instance of same type.
* almost all implementations of java.util.list, set and map have a constructor taking an instance of same type.
* java.util.collections, the checkedxxx(), synchronizedxxx() and unmodifiablexxx() methods.
* javax.servlet.http.httpservletrequestwrapper and httpservletresponsewrapper
facade (recognizeable by behavioral methods which internally uses instances of different independent abstract/interface types)
* javax.faces.context.facescontext, it internally uses among others the abstract/interface types lifecycle, viewhandler, navigationhandler and many more without that the enduser has to worry about it (which are however overrideable by injection).
* javax.faces.context.externalcontext, which internally uses servletcontext, httpsession, httpservletrequest, httpservletresponse, etc.
flyweight (recognizeable by creational methods returning a cached instance, a bit the "multiton" idea)
* java.lang.integer#valueof(int) (also on boolean, byte, character, short, long, float and double)
proxy (recognizeable by creational methods which returns an implementation of given abstract/interface type which in turn delegates/uses a different implementation of given abstract/interface type)
* java.lang.reflect.proxy
* java.rmi.*, the whole api actually.
behavioral patterns
chain of responsibility (recognizeable by behavioral methods which (indirectly) invokes the same method in another implementation of same abstract/interface type in a queue)
* java.util.logging.logger#log()
* javax.servlet.filter#dofilter()
command (recognizeable by behavioral methods in an abstract/interface type which invokes a method in an implementation of a different abstract/interface type which has been encapsulated by the command implementation during its creation)
* all implementations of java.lang.runnable
* all implementations of javax.swing.action
interpreter (recognizeable by behavioral methods returning a structurally different instance/type of the given instance/type; note that parsing/formatting is not part of the pattern, determining the pattern and how to apply it is)
* java.util.pattern
* java.text.normalizer
* all subclasses of java.text.format
* all subclasses of javax.el.elresolver
iterator (recognizeable by behavioral methods sequentially returning instances of a different type from a queue)
* all implementations of java.util.iterator (thus among others also java.util.scanner!).
* all implementations of java.util.enumeration
mediator (recognizeable by behavioral methods taking an instance of different abstract/interface type (usually using the command pattern) which delegates/uses the given instance)
* java.util.timer (all schedulexxx() methods)
* java.util.concurrent.executor#execute()
* java.util.concurrent.executorservice (the invokexxx() and submit() methods)
* java.util.concurrent.scheduledexecutorservice (all schedulexxx() methods)
* java.lang.reflect.method#invoke()
memento (recognizeable by behavioral methods which internally changes the state of the whole instance)
* java.util.date (the setter methods do that, date is internally represented by a long value)
* all implementations of java.io.serializable
* all implementations of javax.faces.component.stateholder
observer (or publish/subscribe) (recognizeable by behavioral methods which invokes a method on an instance of another abstract/interface type, depending on own state)
* java.util.observer/java.util.observable (rarely used in real world though)
* all implementations of java.util.eventlistener (practically all over swing thus)
* javax.servlet.http.httpsessionbindinglistener
* javax.servlet.http.httpsessionattributelistener
* javax.faces.event.phaselistener
state (recognizeable by behavioral methods which changes its behaviour depending on the instance's state which can be controlled externally)
* all implementations of java.util.iterator
* javax.faces.lifecycle.lifecycle#execute() (controlled by facesservlet, the behaviour is dependent on current phase (state) of jsf lifecycle)
strategy (recognizeable by behavioral methods in an abstract/interface type which invokes a method in an implementation of a different abstract/interface type which has been passed-in as method argument into the strategy implementation)
* java.util.comparator#compare(), executed by among others collections#sort().
* javax.servlet.http.httpservlet, the service() and all doxxx() methods take httpservletrequest and httpservletresponse and the implementor has to process them (and not to get hold of them as instance variables!).
* javax.servlet.filter#dofilter()
template method (recognizeable by behavioral methods which already have a "default" behaviour definied by an abstract type)
* all non-abstract methods of java.io.inputstream, java.io.outputstream, java.io.reader and java.io.writer.
* all non-abstract methods of java.util.abstractlist, java.util.abstractset and java.util.abstractmap.
* javax.servlet.http.httpservlet, all the doxxx() methods by default sends a http 405 "method not allowed" error to the response. you're free to implement none or any of them.
visitor (recognizeable by two different abstract/interface types which has methods definied which takes each the other abstract/interface type; the one actually calls the method of the other and the other executes the desired strategy on it)
* javax.lang.model.element.annotationvalue and annotationvaluevisitor
* javax.lang.model.element.element and elementvisitor
* javax.lang.model.type.typemirror and typevisitor
发表评论
-
百度质量部实习居然通过了~
2012-02-08 12:23 992[size=small;]? ? ?本来打算在软工所苦 ... -
Android上的log,日志相关
2012-02-07 14:18 1535摘自:http://blog.csdn.net/met ... -
随 笔
2012-02-04 13:39 600金风玉露一相逢,便胜却人间无数。英文版: chemis ... -
MyISAM InnoDB 区别
2012-02-02 16:59 737<h1 id="artibody ... -
数独suduku
2012-01-31 14:38 916sudu sudu sudu sudu sudu su ... -
paypal提现如何省钱
2011-12-28 16:58 1224据PayPal中文注册得知,如今很多收样品费的外贸商户 ... -
ORA-01012: not logged on 解决办法
2011-12-28 13:08 3512<span style="font-f ... -
c语言中去除const修饰
2011-12-21 10:54 1435[size=16px;]<span style= ... -
虚析构函数(总结 帖子)
2011-12-21 09:54 706<span style="" ... -
手机防盗软件实现(源码)
2011-12-20 12:54 938<a href="http://blo ... -
谈谈Q+平台的技术实现
2011-12-20 09:49 963这篇文章是我个人 ... -
微创短信开发平台
2011-12-19 11:39 772在网上闲逛,发现了一个站点,微创短信开发平台(http ... -
《使用 Microsoft .NET 的企业解决方案模式》读书笔记3
2011-12-19 10:24 783第3章 Web表示模式 没有一个设计策略能够适合所有情 ... -
MapXtreme2004代码 MapControl控件中显示地图文件
2011-12-15 14:29 912::<?xml:namespace prefix ... -
ASP.NET开发工具Web Matrix介绍
2011-12-15 13:39 970<p class="MsoPlain ... -
用C#写定时关机的程序
2011-12-15 11:14 705</span></font>& ... -
JUnit单元测试感悟
2011-12-14 11:29 864<p class="MsoNorma ... -
JNI调用的注意事项
2011-12-14 09:34 755JNI的简单教程网上很多,看看就能够明白,照着操作也基 ... -
javax.xml.transform.TransformerFactoryConfigurationError
2011-12-13 13:34 854<span style="" ... -
ViewFlipper “Receiver not registered” Error
2011-12-12 10:59 1127偶尔出现这个错误: <span> < ...
相关推荐
详解Java中设计模式28种方式
Java中设计模式的28种方式
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
设计模式示例代码(java)设计模式示例代码(java)v设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)...
Java设计模式是面向对象编程领域中的重要概念,它是一套被广泛接受并实践的解决软件设计问题的经验总结。设计模式并非具体的代码或库,而是一种在特定情境下为了解决常见问题而制定的通用解决方案的描述。它们描述了...
JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式
总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...
Java 23中设计模式,Java 23中设计模式Java 23中设计模式Java 23中设计模式Java 23中设计模式Java 23中设计模式Java 23中设计模式Java 23中设计模式Java 23中设计模式Java 23中设计模式
### Java设计模式详解 #### 一、背景与概念 在软件工程领域,设计模式是一种用于解决常见问题的可重用解决方案。《Java设计模式PDF》是一本由James W. Cooper编写的经典书籍,该书详细介绍了Java编程语言中的设计...
《Java设计模式》课程设计报告主要探讨了如何利用Java编程语言和MyEclipse集成开发环境来实现基于设计模式的西瓜市场系统。这个项目涵盖了四种重要的设计模式:单例模式、代理模式、建造者模式和抽象工厂模式,为...
Java作为一门广泛应用的开发语言,其设计模式的应用对于提高代码质量、可维护性和可扩展性至关重要。本文将着重探讨创建型模式、结构型模式和行为模式这三大类设计模式,并结合六项设计原则进行深入解析。 首先,...
在Java编程中,运用合适的设计模式可以提高代码的可维护性、可扩展性和可复用性。以下是关于Java版本设计模式实现demo的一些补充说明: 1. 设计模式分类 设计模式通常分为三大类:创建型模式、结构型模式和行为型模式...
Java中设计模式(装饰设计模式)的实例详解 一、概述 装饰设计模式(Decorator Pattern)是一种结构型设计模式,它允许在不修改原有对象的情况下,给对象添加新的功能。该模式将对象的核心功能和装饰功能分离,...
Java企业设计模式是软件开发领域中的重要组成部分,它是一套经过实践验证的解决方案,用于解决在Java环境中构建大型、复杂企业应用时常见的问题。这些模式是经验丰富的开发者们通过不断尝试和总结,形成的最佳实践,...
Java企业设计模式是软件开发中不可或缺的一部分,它们是经过时间考验、被广泛接受的解决方案模板,用于解决在大型企业级应用程序开发中常见的问题。这些模式提供了可重用的结构,帮助开发者更有效地组织代码,提高...
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
### Java设计模式与Java程序设计知识点详解 #### 一、设计模式的概念与构成要素 设计模式是一种被广泛接受的解决方案,用于解决软件设计中的常见问题。这种解决方案已经被反复验证为有效的,因此在软件开发过程中...
使用5种设计模式完成的一个点单系统,显示不同系列下的所有商品,点击选择冰度甜度之后添加到订单中,计算总金额,下单之后发送订单到门店的后厨制作商品。使用了抽象工厂模式、装饰模式、单例模式、代理模式、原型...
"java设计模式"这个文件可能包含了关于Java中设计模式的详细讨论,涵盖了各种模式的用途、优缺点以及如何在Java项目中有效地应用它们。你可能还会找到一些实用的代码示例,帮助你快速掌握这些模式。 总结来说,设计...
以下是Java Web开发中常见的一些设计模式及其详细解释: 1. **单例模式**:保证一个类只有一个实例,并提供全局访问点。在Java Web应用中,例如用于管理数据库连接池或配置对象。 2. **工厂模式**:为创建对象提供...