0
点赞
收藏
分享

微信扫一扫

设计模式 阿里面试题目

腊梅5朵 2022-07-14 阅读 72


JDK中用到的设计模式

1、创建模式

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

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(); 

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); 

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

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; 

结构模式

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(); 

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); 

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) ; 

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)

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

java.lang.reflect.Proxy 

行为模式

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() 

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

java.util.Date 

java.io.Serializable  额

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

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() 

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

javax.lang.model.element.Element

javax.lang.model.element.ElementVisitor 

javax.lang.model.type.TypeMirror

javax.lang.model.type.TypeVisitor   

举报

相关推荐

0 条评论