一.概述 定义一个用于创建对象的接口,让子类去决定实例化哪个类.工厂方法将一个类的实例化延迟至其子类. 二.适用性 1.当一个类不知道它所必须创建的对象的类的时候. 2.当一个类希望由其子类来指定它所创建的对象的时候. 3.当类将创建对象的职责委托给多个帮助子类的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候. 三.参与者 1.Product:定义工厂方法所创建的对象的接口. 2.ConcreteProduct:实现Product接口. 3.Creator:声明工厂方法,该方法返…
一.概述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 二.适用性 1.当一个系统应该独立于它的产品创建.构成和表示的时候. 2.当要实例化的类是在运行时刻指定的时候,例如:通过动态装载. 3.为了避免创建一个与产品类层次平行的工厂类层次的时候. 4.当一个类的实例只能有几个不同状态组合中的一种的时候. 建立相应数目的原型并克隆它们可能要比每次用合适的状态手工实例化该类更方便一些. 三.参与者 1.Prototype:声明一个克隆自身的接口. 2.ConcreteProtot…
一.概述 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 二.适用性 1.一个系统要独立于它的产品的创建.组合和表示的时候. 2.一个系统要由多个产品系列中的一个来配置的时候. 3.当你要强调一系列相关的产品对象的设计以便进行联合使用的时候. 4.当你提供一个产品类库,而只想显示它们的接口而不是实现的时候. 三.参与者 1.AbstractFactory:声明一个创建抽象产品对象的操作接口. 2.ConcreteFactory:实现创建具体产品对象的操作. 3.Abstra…
一.概述 将一个复杂对象的构建与其表示分离开来,使得同样的构建过程可以创建不同的表示. 二.适用性 1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式的时候. 2.当构造过程必须允许被构造的对象有不同的表示的时候. 三.参与者 1.Builder:为创建一个Product对象的各个部件指定抽象接口. 2.ConcreteBuilder:实现Builder接口以构造和装配该产品的各个部件. 3.Director:构造一个使用Builder接口的对象. 4.Product:表示被构…
1概述 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 2适用性 1.当类只能有一个实例而且客户可以从一个总所周知的访问点访问它的时候. 2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例的时候. 3参与者 Singleton:定义一个Instance操作,允许客户访问它的唯一实例.Instance是一个类的操作,可能复杂创建它自己的唯一实例. 4类图 5示例 Singleton package cn.lynn.singleton; public …
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”.这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关的工厂来完成.就像我们去商场购买商品时,不需要知道商品是怎么生产出来一样,因为它们由专门的厂商生产. 创建型模式分为以下几种. 单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式. 原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似…
简单工厂模式尽管简单,但存在一个非常严重的问题.当系统中须要引入新产品时,因为静态工厂方法通过所传入參数的不同来创建不同的产品,这必然要改动工厂类的源码,将违背"开闭原则".怎样实现添加新产品而不影响已有代码?工厂方法模式应运而生,本文将介绍另外一种工厂模式--工厂方法模式. 1 日志记录器的设计 Sunny软件公司欲开发一个系统执行日志记录器(Logger).该记录器能够通过多种途径保存系统的执行日志,如通过文件记录或数据库记录,用户能够通过改动配置文件灵活地更换日志记录方式. 在设…
前提:“对象创建”模式 通过“对象创建”模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定.它是接口抽象之后的第一步工作. 典型模式(表现最为突出) 工厂方法模式:Factory Method 抽象工厂模式:Abstract Factory 原型模式:Prototype 创建者模式:Builder 一:工厂方法模式 (一)概念 工厂方法模式又被称为多态工厂模式 .工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心…
Java设计模式之[工厂模式](简单工厂模式,工厂方法模式,抽象工厂模式) 工厂模式出现的原因 在java中,创建一个对象最简单的方法就是使用new关键字.但在一些复杂的业务逻辑中,创建一个对象不只需要new一行代码就成了,可能需要一些列的初始化设置,或先创建一些辅助对象来创建这个对象. 在这种场景中,如果需要多次创建这种对象,那每次都要写很多代码.工厂模式的产生就是为了解决这种问题. 工厂模式厉害之处就在于:你不需要知道创建对象的细节就可以轻松的创建你想要的对象,并且产品和工厂是解耦的. 3种…
前言 之前介绍了设计模式的原则和分类等概述.今天开启设计模式的学习,首先要介绍的就是工厂模式,在介绍工厂模式前会先介绍一下简单工厂模式,这样由浅入深来介绍. 简单工厂模式 做法:创建一个工厂(方法或类)用来制造对象. 当一个人想要用手机的时候,需要自己创建手机然后来使用. 如下: public class IphoneX { public IphoneX(){ System.out.println("##### 制造iphoneX #####"); } } public class I…