zoukankan      html  css  js  c++  java
  • 设计模式分类及典型实现

    创建型模式(5)

           创建型模式,就是创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。创建型模式关注的是对象的创建,将创建的过程进行了抽象,也可以理解为将创建对象的过程进行了封装,作为客户程序仅仅需要去使用对象,而不再关心创建对象的过程。

    • 工厂及工厂方法模式(Factory Method)
    • 抽象工厂模式(Abstract Factory)
    • 单例模式(Singleton)
    • 原型模式(Prototype)
    • 创建者模式(Builder)

    【结构型模式】(7)

          结构型模式解决如何组装现有的类,设计它们的交互方式,从而达到实现一定的功能。

    • 外观模式/门面模式(Facade
    • 适配器模式(Adapter)
    • 代理模式(Proxy)
    • 装饰模式(Decorator)
    • 桥模式(Bridge)
    • 组合模式(Composite)
    • 享元模式(Flyweight)

    【行为型模式】(11种)

           行为型模式是对不同对象之间划分责任和算法的抽象化,行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用,通过行为型模式,可以更加清晰地划分类和对象的职责,并研究系统在运行时实例对象之间的交互。

    • 模板方法模式(Template  Method)
    • 观察者模式(Observer)
    • 状态模式(State)
    • 策略模式(Strategy)
    • 职责链模式(Chain of Responsibility)
    • 命令模式(Command)
    • 访问者模式(Visitor)
    • 调停者模式(Mediator)
    • 备忘录模式(Memento)
    • 迭代器模式(Iterator)
    • 解释器模式(Interpreter)

    典型实现

       【工厂及工厂方法模式(Factory Method)

    • java.lang.Class#newInstance()
    • java.lang.Integer#valueOf(String)
    • java.lang.Class#forName()
    • java.lang.reflect.Array#newInstance()

     抽象工厂模式(Abstract Factory)

    • java.util.Arrays#asList()
    • java.util.ResourceBundle#getBundle()
    • java.net.URL#openConnection()
    • java.sql.DriverManager#getConnection()
    • java.sql.Connection#getSatement()
    • java.sql.Statement#executeQuery()
    • java.text.NumberFormat#getInstance()
    • java.nio.charset.Charset#forName()
    • javax.xml.parsers.DocumentBuilderFactory#newInstance()
    • javax.xml.transform.TransformerFactory#newInstance()

    【单例模式(Singleton)

    • java.lang.Runtime#getRuntime()
    • java.awt.Desktop#getDesktop()

    【原型模式(Prototype)】:实现 Cloneable 接口的类,主要重写了 clone() 方法

    • java.util.Date#clone()

    【创造者模式(Builder)

    • java.lang.StringBuilder#append()
    • java.nio.ByteBuffer、CharBuffer 的 put()

    【适配器模式(Adapter)

    • java.io.InputStreamReader(InputStream)
    • java.io.OutputStreamWriter(OutputStream)

    【外观模式/门面模式(Facade)

    • java.faces.context.FacesContext

    【创造者模式(Builder)

    • java.lang.StringBuilder#append()

    【代理模式(Proxy)

    • java.lang.reflect.Proxy

    【装饰模式(Decorator)

    • java.io.InputStream、OutputStream、Reader、Writer 及它们的子类
    • javax.servlet.http.HttpServletRequestWrapper 和 HttpServletResponseWrapper

    【桥模式(Bridge)

    • 待添加

    【组合模式(Composite)

    • java.util.Map#putAll(Map)
    • java.util.List#addAll(Collection)
    • java.util.Set#addAll(Collection)
    • java.nio.ByteBuffer#put(ByteBuffer)

    【享元模式(Flyweight)

    • 待添加

    【模板方法模式(Template  Method)

    • javax.servlet.http.HttpServlet 中所有的 doXXX() 的方法

    【观察者模式(Observer)

    • java.util.Observer / java.util.Observable
    • java.util.EventListener 的实现类
    • javax.servlet.http.HttpSessionBindingListener
    • javax.servlet.http.HttpSessionAttributeListener
    • javax.faces.event.PhaseListener 

    【状态模式(State)

    • 待添加

    【策略模式(Strategy)

    • javax.lang.model.element.Annotation 和 AnnotationValueVisitor
    • javax.lang.model.element.Element 和 ElementVisitor
    • javax.lang.model.type.TypeMirror 和 TypeVisitor

    【职责链模式(Chain of Responsibility)

    • java.util.logging.Logger#log()
    • javax.servlet.Filter#doFilter()

    【命令模式(Command)】:接口一般定义了 execute() 方法

    • java.lang.Runnable 和其实现类
    • java.swing.Action 和其实现类

    【访问者模式(Visitor)

    • 待添加

    【调停者模式(Mediator)】:也叫中介者

    • java.util.concurrent.Executor#execute()
    • java.lang.reflect.Method#invoke()

    【备忘录模式(Memento)

    • javax.faces.component.StateHolder 的实现类

    【迭代器模式(Iterator)

    • 迭代器, java 中继承 Iterator 接口的类

    【解释器模式(Interpreter)

    • java.text.Normalizer
    • java.text.Format 和 javax.el.EL.Resolver 的子类

    转载自:https://www.cnblogs.com/zlxyt/p/10971717.html

  • 相关阅读:
    冒泡排序
    tp框架---View视图层---模板继承(举例说明)
    tp框架---表单验证
    对thinkphp的命名空间的理解
    控制器操作方法的调用
    thinkphp的空控制器和空操作以及对应解决方法
    tp框架的url模式
    tp框架的MVC模式
    thinkphp目录结构
    Linux Centos 下安装软件 三种方式(转)
  • 原文地址:https://www.cnblogs.com/yzhengy/p/13416435.html
Copyright © 2011-2022 走看看