设计模式之“创建型模式”

创建型模式主要分为五大模式,分别为:抽象工厂模式、建造者模式、工厂方法模式、原型模式、单例模式。

抽象工厂模式

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

一、优点

1、易于交换产品系列。

2、它让具体的创建实例过程与客户端分离。

二、反射

Assembly.Load("程序集名称").CreateInstance("命名空间.类名称")需要在程序顶端写上using System.Reflection;来引用Reflection所有用简单工厂的地方,都可以考虑用反射技术去除switch
或if,解除分支判断带来的耦合。

建造者模式

1、将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

2、用户只需要指定需要建造的类型就可以得到他们,而具体建造的过程和细节就不需知道了。

一、使用对象

主要是用于创建一些复杂的对象,这些对象内部构造间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。

工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法使一个类的实例化延迟到其子类。做扩展。

原型模式

1、用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

2、是从一个对象再创建另一个可定制的对象,而且不需知道任何创建的细节。

一、克隆

1、隐藏了对象创建的细节,又对性能是大大的提高。

2、不用重新初始化对象,而是动态地获得对象运行时的状态。

二、MemberwiseClone()

如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。

三、浅复制

被复制对象的所有变量都含有与原来对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。

五、深复制

把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。

六、DataSet中的Clone()方法和Copy()方法

1、Clone():用来复制DataSet的结构,但不复制DataSet的数据,实现了原型模式的浅复制。

2、Copy():不但复制结构,也复制数据,其实就是实现了原型模式的深复制。

单例模式

保证一个类仅有一个实例,并提供一个访问它的全局访问点。它可以保证没有其它实例可以被创建,并且他可以提供一个访问该实例的方法。

一、实用类与单例模式的区别

1、实用类不保存状态,仅提供一些静态方法或静态属性让你使用,而单例类是有状态的。

2、实用类不能用于继承多态,而单例虽然实例唯一,却是可以有子类来继承。

3、实用类只不过是一些方法属性的集合,而单例却是有着唯一的对象实例。

小结:

创建者模式是构建各个部分并且负责将其组织起来,关注的问题是:创建什么(WHAT)、谁创建(WHO)、怎么创建(HOW)、何时创建(WHEN),以此为开发方面提供很大的灵活性!

时间: 2024-10-21 20:19:28

设计模式之“创建型模式”的相关文章

设计模式之创建型模式(上)

没有总结的学习不算学习,这一个月的学习可谓收获多多啊,接下来与大家分享一下. 一.设计模式的分类 总体来说设计模式分为三大类: 1.创建型模式,共五种. 2.结构型模式,共七种. 3.行为型模式,共十一种. 首先研究创建型模式 二. 概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独 立于如何创建.组合和表示它的那些对象. 三. 为什么需要创建型模式 所有的创建型模式都有两个永恒的主旋律: 第一,它们都将系统使用哪些具体类的信息封装起来: 第二,它们隐藏了这些类的实例

设计模式 (创建型模式)

  设计模式 创建型模式 1.创建型模式         创建型模式,包括了5种设计模式,分别是 Singleton (单例模式),Factory(工厂模式),AbstractFactory(抽象工厂模式),Builder(创建者),Prototype(原型) ,创建型模式主要作用就是抽象了实例化过程.他们帮助一个系统独立于如何创建.组合和表示他的那些对象.一个类创建型模式使用继承改变被实例化的类.而一个对象创建型模式将实例化委托给另一个对象. 2.Singleton (单例模式)      单

设计模式系列 - 创建型模式

单例模式 懒汉式,线程不安全. 除非是单线程程序,否则不推荐使用. public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } 饿汉式,线程安全 当程序总是使用这个

设计模式之创建型模式

一.前言 设计模式应该是在软件工程的背景下进行讨论的,而不是为了设计模式而论设计模式.设计模式是软件工程面向对象设计工作中一个抽象.归纳.总结的过程.软件设计的最高目标和最高准则就是易扩展,易复用,易维护, 灵活性高,高可用,稳定性高一切的设计原则和设计模式最终的目标都是向这个目标靠拢的. 二.面向对象设计六大原则 任何的设计模式都是基于面向对象的特性(抽象.封装.继承.多态)和设计原则进行设计和实现的,是面向对象设计原则的在不同场景下的实现方案. 抽象:抽离变化的部分,引入抽象层,实现具体实现

Java设计模式之创建型模式

创建型模式分为五类:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式 一.工厂方法模式:接口-实现类-工厂类 工厂类的目的是为了产生Sender对象,通过不同的参数传入产生不同的对象. 将工厂类中的工厂方法改为多个工厂方法即为多个工厂方法的设计模式 将工厂类中的工场方法改为static即为静态工厂方法设计模式 二.抽象工厂方法模式:接口-实现类-工厂类 特点是: 工厂类实现某个接口,利于以后扩展,比如可以增加BlueTooth的工厂类. 工厂设计模式是抽象工厂设计模式的一个特例. 三.

设计模式1—创建型模式

模式 在一定环境中解决某一问题的方案,包括三个基本元素--问题,解决方案和环境. 大白话:在一定环境下,用固定套路解决问题. 设计模式(Design pattern) 是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 设计模式的分类(Gang of Four的"DesignPatt

设计模式_创建型模式_简单工厂模式

转载自:http://blog.csdn.net/lovelion  作者:刘伟 简单工厂模式并不属于GoF 23个经典设计模式,但通常将它作为学习其他工厂模式的基础,它的设计思想很简单,其基本流程如下:        首先将需要创建的各种不同对象(例如各种不同的Chart对象)的相关代码封装到不同的类中,这些类称为具体产品类, 而将它们公共的代码进行抽象和提取后封装在一个抽象产品类中,每一个具体产品类都是抽象产品类的子类: 然后提供一个工厂类用于创建各种产品,在工厂类中提供一个创建产品的工厂方

设计模式_创建型模式——工厂方法

工厂方法(Factory Method):工厂方法模式属于类的创建型模式.在工厂方法模式中,父类负责定义创建产品对象的工厂接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化哪一个类. abstract Product factoryMethod(String type) abstract:工厂方法是抽象的,依赖子类来处理对象的创建 Product:工厂方法返回一个产品,超类中定义的方法,通常使用到工厂方法的返回值 String:工厂方法

设计模式_创建型模式

创建型模式与对象创建有关. 1. Abstract Factory (抽象工厂) 定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 适用:一个系统要独立于它的产品的创建.组合和表示时. 与工厂模式的区别:工厂模式的一个工厂接口的子类只能实例化一个产品:抽象工厂能实例多个产品. 例子代码: package designModel; // 产品1 interface IProduct1 { } class Product1A implements IProduct1 { }