对创建型模式的再思考

By | 10月18日
Advertisement

1.简单工厂模式:只是将对象从客户端剖离,交给工厂创建,如果要创建的对象很多,工厂类就会很庞大并且增加判断逻辑。

2.工厂方法模式:对每个对象单独建立工厂类,明确类的职责,但当对象很多时仍需要编写很多额外代码。可利用Java反射机制。

3.抽象工厂模式:当需要创建的对象之间存在相互关系,可以分组,每组实现一个具体的工厂类继承抽象工厂类。但如果业务改变,需要修改抽象工厂类设计,还要修改具体工厂类设计,代码维护量加大。

4.创建者模式:将复杂对象的构建与其表示分离,使得同样的创建过程可以创建不同的表示,组装类负责组装对象的组装,客户端只负责调用组装类,明确了类的职责。当有多个差异较大的对象需要创建者时,可以结合工厂模式。

5.原型模式:使用对象的克隆,创建与原型对象具有类似行为的新对象。缺点是在使用clone方法时会衍生出一些深度克隆的问题,还要考虑StringBuffer,String类在克隆时的例外情况。

6.单例模式:当需要一个类只有一个实例存在,只提供一个全局调用指针时,要使用单例模式。使用静态变量实现。在使用单例模式时,需要考虑很多例外,比如多线程环境和对象序列化和反序列化时有可能使得单例类出现多个实例的情况。典型应用在日志管理,数据库连接中。

Similar Posts:

  • 创建型模式--(再论)单例模式

    在创建型模式--单例模式 一文中我们提到单例模式,就是 一个类仅有一个实例,并提供一个访问它的全局访问点. 那么问题来了,我们以上一篇中代码为例: <pre name="code" class="java">/** * 定义一个Instance操作,允许客户访问它的唯一实例. * Instance是一个类操作. * 负责创建它自己的唯一实例. * @author Linhai Gu * */ public class Singleton { privat

  • 第6章 创建型模式—建造者模式

    1. 建造者(Builder,或生成器)模式的定义 (1)将一个复杂对象构建与它的表示分离,使得同样的构建过程可以创建不同的表示. ①上述提到的"构建"是指构造过程的算法(即构造顺序,位于director类中),"表示"指生成各部件的具体细节(或叫实现,位于Builder或其子类中). ②由指导者(director)来指导构造过程,而建造者(builder)负责每步的对象的具体实现和组装各部件. ③指导者可以重用构建过程,而生成器是可以被切换的具体实现. (2)建造

  • Java 设计模式 创建型模式 + 案例

    创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 工厂方法模式(Factory Method) 工厂方法模式分为三种:普通工厂模式 多个工厂方法模式 静态工厂方法模式 1.1.普通工厂模式,就是建立一个工厂类,对实现了同一接口的产品类进行实例的创建 //发送短信和邮件的接口 public interface Sender { public void Send(); } //发送邮件的实现类 public class MailSender implements Se

  • 设计模式4——创建型模式之单例模式

    定义:单例模式(SingletonPattern),保证一个类仅有一个实例,并提供一个访问它的全局访问点. 类型:创建型模式 类图: 概述: 在很多比较大型的程序中,全局变量经常被用到.如果不用全局变量,那么在使用到的模块中,都需要用参数将全局变量传入,这是非常麻烦的.虽然要减少使用全局变量,但是如果需要,还是要用.单例模式就是对传统的全局的一种改进.单例可以做到延时实例化,即在需要的时候才进行实例化.针对一些大型的类,延时实例化是有好处的. 需要注意的是,在C#,Java中,有饿汉单例模式(即

  • 【设计模式攻略】创建型模式之Factory模式

    概要 Factory模式在现代编程语言中应该也是使用最广泛的模式之一.Factory模式有很多变体,根据实际情况,实现形式多样.最常见的可能还是GOF中提出的Abstract Factory模式和Factory Method模式.本文只是从最基本的Facotry模式概念本身出发,看看抛开GOF提出的两种经典Factory模式不谈,现阶段常见Factory模式的实现形式,在后续的其他文章中会再跟大家重点讨论GOF提出的Abstract Factory和Factory Method这两种模式. Fa

  • ※设计模式※→☆创建型模式☆============Singleton模式(一)

    模式概述 个人认为 Singleton模式是所有设计试中最简单,最常见,也是最容易实现的,因此,设计模式就先从 Singleton模式开始说起吧!对于开发人员来说也是最应该熟悉和把握的模式.因此,此模式在招聘的现场上出现的概率是极高的.面试官为考察面试者对设计 的基本了解和掌握,经常会问 "设计模式中的单键模式用来解决什么问题?如何实现?" Singleton模式,顾名思义,Singleton就是确保一个类只有唯一的一个实例.Singleton主要用于对象的创建,这意味着,如果某个类采

  • C#面向对象设计模式学习笔记(5) - Prototype 原型模式(创建型模式)

    在软件系统中,经常面临着"某些结构复杂的对象"的创建工作:由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口. 如何应对这种变化?如何向"客户程序(使用这些对象的程序)"隔离出"这些易变对象",从而使得"依赖这些易变对象的客户程序"不随着需求改变而改变? 使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象. 结构: public abstract class NormalActor

  • 创建型模式——原型模式(Prototype Pattern)

    一. 原型模式简介 原型模式(Prototype Pattern)也是一种创建型模式,它关注的是大量相似对象的创建问题.我们经常会遇到这样的情况:在系统中要创建大量的对象,这些对象之间具有几乎完全相同的功能,只是在细节上有一点儿差别. 这样的情形经常遇到.三国系列游戏是我最喜欢的游戏系列之一.你有没有注意到那里边上百位英雄的头像基本上很相似?你仔细区分就会发现,虽然每个人都不同,但基本上只具有几种脸型:长方的.圆形的.细长的,然后配上不同的胡子.眉毛.眼睛.嘴,有的再加点儿伤疤或装饰物(比如给独

  • builder模式-对象创建型模式

    前言:这个模式看了很长时间,反反复复,也没理解多少,当然主要还是现实代码开发中未遇到过类似的场景是需要使用到builder模式的,可能做的项目都不够复杂吧,所以还是转载一篇我个人认为解释不错的文章来的比较实际,待自己在现实项目中遇到过后,再来写具体的感受,网上对于builder模式的例子都是汽车类例子,所以除此之外我会继续补充一个迷宫的例子加深大家影响,主要我个人认为这两个场景是使用到builder模式的典型场景.下面是我转载的原文内容:来自:http://dev.csdn.net/htmls/

  • 23种设计模式之我见----创建型模式(1)

    创建型模式: 创建型模式抽象了实例化过程.他们帮助一个系统独立于如何创建.组合和表示他的那些对象.一个类创建型模式使用继承改变被实例化的类.而一个对象创建型模式将实例化委托给另一个对象. 1.工厂模式 这种模式没必要多讲,其实就是接口实现的问题,这种在项目开发中实在是太常见了 Animal public interface Animal{ public void Jiao(); }; Dog public class Dog implements Animal(){ @override publ

Tags: