首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

JDK中运用到的23个经典设计模式

2012-09-07 
JDK中使用到的23个经典设计模式A. 创建模式Singleton(单态):只允许一个实例?view plaincopy to clipboardp

JDK中使用到的23个经典设计模式

A. 创建模式

Singleton(单态):只允许一个实例

?

view plaincopy to clipboardprint?
  1. Runtime.getRuntime();??java.awt.Toolkit.getDefaultToolkit();??
  2. java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();??java.awt.Desktop.getDesktop();??


Abstract factory(抽象工厂):创建一组有关联的对象实例

?

?

view plaincopy to clipboardprint?
  1. java.util.Calendar.getInstance();??java.util.Arrays.asList();??
  2. java.util.ResourceBundle.getBundle(String?baseName);??java.sql.DriverManager.getConnection(String?url);??
  3. java.sql.Connection.createStatement();??java.sql.Statement.executeQuery(String?sql);??
  4. java.text.NumberFormat.getInstance();??javax.xml.transform.TransformerFactory.newInstance();??

?

?

Factory(工厂方法):按照需求返回一个类型的实例

view plaincopy to clipboardprint?
  1. ?java.lang.Proxy.newProxyInstance();??java.lang.Object.toString();??
  2. java.lang.Class.newInstance();??java.lang.reflect.Array.newInstance();??
  3. java.lang.reflect.Constructor.newInstance();??java.lang.Boolean.valueOf(String?s);??
  4. java.lang.Class.forName(String?className);??


Builder(建造者):主要用来简化一个复杂的对象的创建

?

?

view plaincopy to clipboardprint?
  1. java.lang.StringBuilder.append(Object?obj);??java.lang.StringBuffer.append(Object?obj);????
  2. java.sql.PreparedStatement????javax.swing.GroupLayout.Group.addComponent();??


Prototype(原型):使用自己的实例创建另一个实例

?

?

view plaincopy to clipboardprint?
  1. java.lang.Object.clone();??java.lang.Cloneable;??


B.结构模式

?

Adapter(适配器):个接口或是类变成另外一种

?

view plaincopy to clipboardprint?
  1. java.util.Arrays.asList();??javax.swing.JTable(TableModel)????
  2. java.io.InputStreamReader(InputStream)????java.io.OutputStreamWriter(OutputStream)????
  3. javax.xml.bind.annotation.adapters.XmlAdapter.marshal();??javax.xml.bind.annotation.adapters.XmlAdapter.unmarshal();??


Composite(组合):让使用者把单独的对象和组合对象混用

?

?

view plaincopy to clipboardprint?
  1. javax.swing.JComponent.add(Component?comp);??java.awt.Container.add(Component?comp);???
  2. java.util.Map.putAll(Map?m);??java.util.List.addAll(Collection?c);??
  3. java.util.Set.addAll(Collection?c);??


Decorator(装饰器):为一个对象动态的加上一系列的动作,而不需要因为这些动作的不同而产生大量的继承类

?

?

view plaincopy to clipboardprint?
  1. java.io.BufferedInputStream(InputStream);??java.io.DataInputStream(InputStream);??
  2. java.io.BufferedOutputStream(OutputStream);??java.util.zip.ZipOutputStream(OutputStream);??
  3. java.util.Collections.checkedList(List?list,?Class?type)?;???


Facade(门面):一个简单的接口包状一组组件,接口,抽象或是子系统。

?

?

view plaincopy to clipboardprint?
  1. java.lang.Class????javax.faces.webapp.FacesServlet??


Flyweight(共享元):有效率地存储大量的小的对象

?

?

view plaincopy to clipboardprint?
  1. java.lang.Integer.valueOf(int)????java.lang.Boolean.valueOf(boolean)????
  2. java.lang.Byte.valueOf(byte)?? java.lang.Character.valueOf(char)??


Proxy(代理):用一个简单的对象来代替一个复杂的对象

?

?

view plaincopy to clipboardprint?
  1. java.lang.reflect.Proxy??


C.行为模式

?

Chain of Responsibility(责任链):一个对象在一个链接传递直到被处理

view plaincopy to clipboardprint?
  1. java.util.logging.Logger.log()???javax.servlet.Filter.doFilter()???


Command(命令):将一系列的命令封装成在一个类中

?

?

view plaincopy to clipboardprint?
  1. java.lang.Runnable??javax.swing.Action??


Interpreter(解释器):定义语言的文法 ,并且建立一个解释器来解释该语言中的句子

?

?

view plaincopy to clipboardprint?
  1. java.util.Pattern??java.text.Normalizer??
  2. java.text.Format????


Iterator(迭代器):对象遍历

?

?

view plaincopy to clipboardprint?
  1. java.util.Iterator??java.util.Enumeration??


Mediator(中介):用一个中介对象来封装一系列关于对象交互行为.

?

?

view plaincopy to clipboardprint?
  1. java.util.Timer??java.util.concurrent.Executor.execute()??
  2. java.util.concurrent.ExecutorService#submit()??java.lang.reflect.Method.invoke()??


Memento(快照):保存另外一个对象内部状态拷贝的对象

?

?

view plaincopy to clipboardprint?
  1. java.util.Date??java.io.Serializable??


Observer(观察者):事件监听器

?

?

view plaincopy to clipboardprint?
  1. java.util.EventListener??javax.servlet.http.HttpSessionBindingListener??
  2. javax.servlet.http.HttpSessionAttributeListener??javax.faces.event.PhaseListener???


State(状态):不同的状态,不同的行为;或者说,每个状态有着相应的行为.

?

?

view plaincopy to clipboardprint?
  1. java.util.Iterator??javax.faces.lifecycle.LifeCycle.execute()??


Strategy(策略):定义一系列的算法,把这些算法一个个封装成单独的类

?

?

view plaincopy to clipboardprint?
  1. java.util.Comparator.compare()??javax.servlet.http.HttpServlet???
  2. javax.servlet.Filter.doFilter()??


Template(模板):定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中

?

?

view plaincopy to clipboardprint?
  1. java.util.Collections.sort()??java.io.InputStream.skip()???
  2. java.io.InputStream.read()??java.util.AbstractList.indexOf()???


Visitor(访问者):作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作.

?

?

view plaincopy to clipboardprint?
  1. javax.lang.model.element.Element?和javax.lang.model.element.ElementVisitor??javax.lang.model.type.TypeMirror?和javax.lang.model.type.TypeVisitor????

?

热点排行