本文章已收录于:
版权声明:本文为博主原创文章,未经博主允许不得转载。
A. 创建模式
Singleton(单态):只允许一个实例
- Runtime.getRuntime();
- java.awt.Toolkit.getDefaultToolkit();
- java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();
- java.awt.Desktop.getDesktop();
Runtime.getRuntime();
java.awt.Toolkit.getDefaultToolkit();
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();
java.awt.Desktop.getDesktop();
Abstract factory(抽象工厂):创建一组有关联的对象实例
- java.util.Calendar.getInstance();
- java.util.Arrays.asList();
- java.util.ResourceBundle.getBundle(String baseName);
- java.sql.DriverManager.getConnection(String url);
- java.sql.Connection.createStatement();
- java.sql.Statement.executeQuery(String sql);
- java.text.NumberFormat.getInstance();
- javax.xml.transform.TransformerFactory.newInstance();
java.util.Calendar.getInstance();
java.util.Arrays.asList();
java.util.ResourceBundle.getBundle(String baseName);
java.sql.DriverManager.getConnection(String url);
java.sql.Connection.createStatement();
java.sql.Statement.executeQuery(String sql);
java.text.NumberFormat.getInstance();
javax.xml.transform.TransformerFactory.newInstance();
Factory(工厂方法):按照需求返回一个类型的实例
- java.lang.Proxy.newProxyInstance();
- java.lang.Object.toString();
- java.lang.Class.newInstance();
- java.lang.reflect.Array.newInstance();
- java.lang.reflect.Constructor.newInstance();
- java.lang.Boolean.valueOf(String s);
- java.lang.Class.forName(String className);
java.lang.Proxy.newProxyInstance();
java.lang.Object.toString();
java.lang.Class.newInstance();
java.lang.reflect.Array.newInstance();
java.lang.reflect.Constructor.newInstance();
java.lang.Boolean.valueOf(String s);
java.lang.Class.forName(String className);
Builder(建造者):主要用来简化一个复杂的对象的创建
- java.lang.StringBuilder.append(Object obj);
- java.lang.StringBuffer.append(Object obj);
- java.sql.PreparedStatement
- javax.swing.GroupLayout.Group.addComponent();
java.lang.StringBuilder.append(Object obj);
java.lang.StringBuffer.append(Object obj);
java.sql.PreparedStatement
javax.swing.GroupLayout.Group.addComponent();
Prototype(原型):使用自己的实例创建另一个实例
java.lang.Object.clone();
java.lang.Cloneable;
B.结构模式
Adapter(适配器):个接口或是类变成另外一种
- java.util.Arrays.asList();
- javax.swing.JTable(TableModel)
- java.io.InputStreamReader(InputStream)
- java.io.OutputStreamWriter(OutputStream)
- javax.xml.bind.annotation.adapters.XmlAdapter.marshal();
- javax.xml.bind.annotation.adapters.XmlAdapter.unmarshal();
java.util.Arrays.asList();
javax.swing.JTable(TableModel)
java.io.InputStreamReader(InputStream)
java.io.OutputStreamWriter(OutputStream)
javax.xml.bind.annotation.adapters.XmlAdapter.marshal();
javax.xml.bind.annotation.adapters.XmlAdapter.unmarshal();
Composite(组合):让使用者把单独的对象和组合对象混用
- javax.swing.JComponent.add(Component comp);
- java.awt.Container.add(Component comp);
- java.util.Map.putAll(Map m);
- java.util.List.addAll(Collection c);
- java.util.Set.addAll(Collection c);
javax.swing.JComponent.add(Component comp);
java.awt.Container.add(Component comp);
java.util.Map.putAll(Map m);
java.util.List.addAll(Collection c);
java.util.Set.addAll(Collection c);
Decorator(装饰器):为一个对象动态的加上一系列的动作,而不需要因为这些动作的不同而产生大量的继承类
- java.io.BufferedInputStream(InputStream);
- java.io.DataInputStream(InputStream);
- java.io.BufferedOutputStream(OutputStream);
- java.util.zip.ZipOutputStream(OutputStream);
- java.util.Collections.checkedList(List list, Class type) ;
java.io.BufferedInputStream(InputStream);
java.io.DataInputStream(InputStream);
java.io.BufferedOutputStream(OutputStream);
java.util.zip.ZipOutputStream(OutputStream);
java.util.Collections.checkedList(List list, Class type) ;
Facade(门面):一个简单的接口包状一组组件,接口,抽象或是子系统。
java.lang.Class
javax.faces.webapp.FacesServlet
Flyweight(共享元):有效率地存储大量的小的对象
- java.lang.Integer.valueOf(int)
- java.lang.Boolean.valueOf(boolean)
- java.lang.Byte.valueOf(byte)
- java.lang.Character.valueOf(char)
java.lang.Integer.valueOf(int)
java.lang.Boolean.valueOf(boolean)
java.lang.Byte.valueOf(byte)
java.lang.Character.valueOf(char)
Proxy(代理):用一个简单的对象来代替一个复杂的对象
java.lang.reflect.Proxy
C.行为模式
Chain of Responsibility(责任链):一个对象在一个链接传递直到被处理
java.util.logging.Logger.log()
javax.servlet.Filter.doFilter()
Command(命令):将一系列的命令封装成在一个类中
java.lang.Runnable
javax.swing.Action
Interpreter(解释器):定义语言的文法 ,并且建立一个解释器来解释该语言中的句子
java.util.Pattern
java.text.Normalizer
java.text.Format
Iterator(迭代器):对象遍历
java.util.Iterator
java.util.Enumeration
Mediator(中介):用一个中介对象来封装一系列关于对象交互行为.
- java.util.Timer
- java.util.concurrent.Executor.execute()
- java.util.concurrent.ExecutorService#submit()
- java.lang.reflect.Method.invoke()
java.util.Timer
java.util.concurrent.Executor.execute()
java.util.concurrent.ExecutorService#submit()
java.lang.reflect.Method.invoke()
Memento(快照):保存另外一个对象内部状态拷贝的对象
java.util.Date
java.io.Serializable
Observer(观察者):事件监听器
- java.util.EventListener
- javax.servlet.http.HttpSessionBindingListener
- javax.servlet.http.HttpSessionAttributeListener
- javax.faces.event.PhaseListener
java.util.EventListener
javax.servlet.http.HttpSessionBindingListener
javax.servlet.http.HttpSessionAttributeListener
javax.faces.event.PhaseListener
State(状态):不同的状态,不同的行为;或者说,每个状态有着相应的行为.
java.util.Iterator
javax.faces.lifecycle.LifeCycle.execute()
Strategy(策略):定义一系列的算法,把这些算法一个个封装成单独的类
java.util.Comparator.compare()
javax.servlet.http.HttpServlet
javax.servlet.Filter.doFilter()
Template(模板):定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中
- java.util.Collections.sort()
- java.io.InputStream.skip()
- java.io.InputStream.read()
- java.util.AbstractList.indexOf()
java.util.Collections.sort()
java.io.InputStream.skip()
java.io.InputStream.read()
java.util.AbstractList.indexOf()
Visitor(访问者):作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作.
- javax.lang.model.element.Element 和javax.lang.model.element.ElementVisitor
- javax.lang.model.type.TypeMirror 和javax.lang.model.type.TypeVisitor
javax.lang.model.element.Element 和javax.lang.model.element.ElementVisitor
javax.lang.model.type.TypeMirror 和javax.lang.model.type.TypeVisitor
-
顶
- 1
-
踩
- 2
我的同类文章
http://blog.csdn.net
- •Java设计模式(五)Facade(外观),Composite(组合),Decorator(油漆工)2011-08-02
- •正则表达式之身份证号验证2011-07-20
- •META-INF下文件读取2011-01-25
- •JBoss环境路径读取2010-07-26
- •JAVA 求昨天、明天的算法(前两天,后三天求法)2008-03-21
- •Java执行外部程序2011-07-24
- •Java设计模式(四)Proxy(代理),Flyweight(共享元)2011-07-18
- •Java金融货币计算探讨与实现2010-12-22
- •Java配置文件读取2010-05-04