Java模式速查手册

自己按照阎宏《Java与模式》总结的Java模式总结,包括速查和详细内容。
内容包括
一、创建模式:动态决定怎样创建对象,创建哪些对象和如何组合这些对象的模式。(9页)
1、简单工厂(Simple Factory)
概念:由一个工厂对象决定创建哪些产品类的实例。
使用情况:需要根据不同条件产生不同产品类且产品类简单时使用。
实例:java.text.DateFormat。
(9页)
2、工厂方法(Factory Method)
概念:利用不同实现工厂接口的类产生不同产品。
使用情况:用于克服简单工厂不易于扩展的缺点。
实例:java.util.Collection。
(10页)
3、抽象工厂(Abstract Factory)
概念:利用不同实现工厂接口的类产生一类产品对象。
使用情况:产品是多于一个的产品族,一次使用一组产品。
实例:java.awt.peer.ButtonPeer。
(11页)
4、单例(Singleton)
概念:用于确保系统中某个类只有一个实例,而且自行向系统提供。
使用情况:只要求系统有一个实例的情况下使用。
实例:java.awt.Toolkit。
(12页)
5、建造(Builder)
概念:导演者对象利用创造者实例产生不同产品对象,隐藏产品产生过程。
使用情况:用于产品配置比较复杂的情况。
实例:JavaMail。
(17页)
5、原始模型(Prototype)
概念:利用原始对象生成更多相同对象。
使用情况:产品类动态加载并且具有一定产品等级结构。
实例:JavaBean串行化。
(19页)
二、结构模式:描述如何将类和对象结合到一起形成更大结构的模式。(22页)
1、适配器(Adapter)。
概念:把一个类的接口变成客户端所期待的另一种接口。
使用情况:系统所需的接口和提供的不相符。
实例:JDBC驱动。
(22页)
2、缺省适配(Default Adapter)
概念:为一个接口实现缺省实现,子类便可以从缺省类实现。
使用情况:接口比较复杂,子类不准备实现接口所有方法。
实例:WindowAdapter。(25页)
3、合成(Composite)
概念:把对象组织到树结构中,用来描述整体和部分的关系。
使用情况:某些需要有整体部分关系的结构,客户端需要平等对待构件。
实例:java.awt.Container。
(26页)
4、装饰(Decorator)
概念:以客户端透明的方式扩展对象功能。
使用请况:需要动态扩展一个类的功能,而且功能很多。
实例:java.io类。
(31页)
5、代理(Proxy)
概念:由代理对象代替原来对象的引用。
使用情况:需要在原来的对象操作时增加方法。
实例:Hibernate的Session。
(35页)
6、享元(Flyweight)
概念:类似于线程池,当系统需要大量对象,根据需求返回同一对象。
使用情况:系统有大量对象而且消耗大量内存。
实例:线程池。
(38页)
7、门面(Facade)
概念:利用几个对象实现对系统大量对象的访问。
使用情况:为一个复杂系统提供简单接口,保存子系统独立性。
实例:MVC中的View层。
(43页)
8、桥梁(Bridge)
概念:利用聚合代理继承,增加系统灵活性。
使用情况:系统需要在构件的抽象化角色和具体角色之间增加更多灵活性,要求角色改变不影响客户端,抽象和具体角色独立变化。
实例:JDBC桥,java.awt.Peer。
(45页)
三、行为模式:在对象间划分责任和算法的模式。(48页)
1、不变(Immutable)
概念:一个对象在被创建之后不再变化。
使用情况:当对象需要被对多个线程共享时可以使用不变模式。
实例:String类。
(48页)
2、策略(Strategy)
概念:针对一组算法,将每一个算法封装在共同接口的独立类中,使它们可以互相替换。
使用情况:系统需要动态的选择几种算法,并不希望客户端知道且不希望用多重条件来实现。
实例:java.awt.LayoutManager类。
(49页)
3、模板方法(Template Method)
概念:准备一个抽象类,将部分逻辑以具体方法及构造函数的形式实现,然后利用抽象方法使子类实现剩余逻辑,方法分为模板方法和基本方法。
使用情况:利用模板方法可以分开设计类,主设计师负责模板类。
实例:HttpServlet类。
(52页)
4、观察者(Observer)
概念:定义一对多的依赖关系,让多个观察者同时监听某一个主题对象。
使用情况:系统要求在某个对象状态变化时,某些其他对象需要作出相应的变化。
实例:java.awt省的事件处理。
(54页)
5、迭代子(Iterator)
概念:顺序地访问一个聚集中的元素而不需要暴露聚集的内部构成。
使用情况:当希望客户端利用通用方法访问聚集元素。
实例:java.util.Collection中类。
(57页)
6、责任链(Observer)
概念:很多对象由每一个对象及其下家对象的引用连接成一条链。请求在链上传递,知道链上某一个对象处理该请求。
使用情况:系统需要在不影响客户端的情况下动态重新组织链和分配责任。
实例:Servlet中的Filter。
(61页)
6、命令(Command)
概念:把一个请求或操作封装在一个对象中。
使用情况:系统可以把请求排队或者需要支持命令的撤销及日志支持。
实例:Swing中的撤销和恢复。
(64页)
7、备忘录(Memento)
概念:利用一个备忘录对象来存储另外一个对象内部的快照。
使用情况:系统需要在不改变对象的情况下存储对象状态。
实例:Hibernate中Cache。
(68页)
8、状态(State)
概念:允许一个对象在其内部状态变化时改变其行为,主对象利用状态对象执行不同操作。
使用情况:一个对象的行为依赖于它所处的状态,亦可替代多重条件语句,不同于策略模式在于状态模式的状态经常改变策略模式则只用一个策略。
实例:用户登录。
(75页)
9、访问者(Visitor)
概念:封装访问结构元素如树的算法,适用于结构变化少的结构。
使用情况:希望利用一组对象访问某种结构对象。
实例:HtmlParser工具。
(77页)
10、解释器(Interpreter)
概念:解释器模式可以定义某种语法结构并给出解释器。
使用情况:系统希望提供某种语法。
实例:Hibernate中的Expression。
(81页)
11、调停者(Mediator)
概念:调停者模式包装了一系列对象互相作用的方式,使得这些对象不必须互相引用。
使用情况:系统比较复杂时使用。
实例:Mvc中的View层。
(85页)

你可能感兴趣的:(java,设计模式,Hibernate,mvc,算法)