当前位置:文档之家› C设计模式工厂型设计示例

C设计模式工厂型设计示例

C设计模式工厂型设计示例
C设计模式工厂型设计示例

Factory Method

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

?当一个类不知道它所必须创建的对象的类的时候。

?当一个类希望由它的子类来指定它所创建的对象的时候。

?当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

namespace FactoryMethod_DesignPattern

{

using System;

. .

/// public class Client

{

public static int Main(string[] args)

{

MyApplication myApplication = new MyApplication();

();

();

return 0;

}

}

}

一、工厂方法(Factory Method)模式

工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。

工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。

在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不接触哪一个产品类被实例化这种细节。这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。

在Factory Method模式中,工厂类与产品类往往具有平行的等级结构,它们之间一一对应。

二、Factory Method模式角色与结构:

抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。

具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。在上图中有两个这样的角色:BulbCreator与TubeCreator。

抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在上图中,这个角色是Light。

具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。

三、程序举例:

using System;

public abstract class Light

{

public abstract void TurnOn();

public abstract void TurnOff();

}

public class BulbLight : Light

{

public override void TurnOn()

{ ("Bulb Light is Turned on"); }

public override void TurnOff()

{ ("Bulb Light is Turned off"); }

}

public class TubeLight : Light

{

public override void TurnOn()

{ ("Tube Light is Turned on"); }

public override void TurnOff()

{ ("Tube Light is Turned off"); }

}

public abstract class Creator

{

public abstract Light factory();

}

public class BulbCreator : Creator {

public override Light factory()

{ return new BulbLight(); }

}

public class TubeCreator : Creator {

public override Light factory()

{ return new TubeLight(); }

}

public class Client

{

public static void Main()

{

Creator c1 = new BulbCreator(); Creator c2 = new TubeCreator();

Light l1 = ();

Light l2 = ();

();

();

("-----------------");

();

();

}

}

工厂方法的活动序列图

活动过程包括:

客户端创建BulbCreator对象,客户端持有此对象的类型是Creator,而实际类型是BulbCreator。然后客户端调用BulbCreator的factory方法,之后BulbCreator调用BulbLight的构造函数创造出产品BulbLight对象。

四、工厂方法模式与简单工厂模式

工厂方法模式与简单工厂模式再结构上的不同不是很明显。工厂方法类的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。

工厂方法模式之所以有一个别名叫多态性工厂模式是因为具体工厂类都有共同的接口,或者有共同的抽象父类。

当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体对象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也不需要修改客户端,很好的符合了"开放-封闭"原则。而简单工厂模式在添加新产品对象后不得不修改工厂方法,扩展性不好。

工厂方法模式退化后可以演变成简单工厂模式。

五、Factory Method模式演化

使用接口或抽象类

抽象工厂角色和抽象场频角色都可以选择由接口或抽象类实现。

使用多个工厂方法

抽象工厂角色可以规定出多于一个的工厂方法,从而使具体工厂角色实现这些不同的工厂方法,这些方法可以提供不同的商业逻辑,以满足提供不同的产品对象的任务。

产品的循环使用

工厂方法总是调用产品类的构造函数以创建一个新的产品实例,然后将这个实例提供给客户端。而在实际情形中,工厂方法所做的事情可以相当复杂。

一个常见的复杂逻辑就是循环使用产品对象。工厂对象将已经创建过的产品登记到一个聚集中,然后根据客户所请求的产品状态,向聚集查询。如果有满足要求的产品对象,就直接将产品返回客户端;如果聚集中没有这样的产品对象,那么就创建一个新的满足要求的产品对象,然后将这个对象登记到聚集中,再返还给客户端。"享元模式(Flyweight Pattern)"就是这样一个模式。

多态性的丧失和模式的退化

一个工厂方法模式的实现依赖于工厂角色和产品角色的多态性。在有些情况下,这个模式可以出现退化。

工厂方法返回的类型应当是抽象类型,而不是具体类型。调用工厂方法的客户端应当依赖抽象产品编程,而不是具体产品。如果工厂仅仅返回一个具体产品对象,便违背了工厂方法的用意,发生退化,这时就不再是工厂模式了。

工厂的等级结构:工厂对象应当有一个抽象的超类型。如果等级结构中只有一个具体工厂类的话,抽象工厂就可以省略,发生了退化。

六、Factory Method模式与其它模式的关系

与工厂方法模式有关的模式还包括:

模板方法模式、MVC模式、享元模式、备忘录模式

七、另外一个例子

// Factory Method pattern -- Real World example

using System;

using ;

// "Product"

abstract class Page

{

}

// "ConcreteProduct"

class SkillsPage : Page

{

}

// "ConcreteProduct"

class EducationPage : Page

{

}

// "ConcreteProduct"

class ExperiencePage : Page

{

}

// "ConcreteProduct"

class IntroductionPage : Page

{

}

// "ConcreteProduct"

class ResultsPage : Page

{

}

// "ConcreteProduct"

class ConclusionPage : Page

{

}

// "ConcreteProduct"

class SummaryPage : Page

}

// "ConcreteProduct"

class BibliographyPage : Page

{

}

// "Creator"

abstract class Document

{

// Fields

protected ArrayList pages = new ArrayList();

// Constructor

public Document()

{

();

}

// Properties

public ArrayList Pages

{

get{ return pages; }

}

// Factory Method

abstract public void CreatePages();

}

// "ConcreteCreator"

class Resume : Document

{

// Factory Method implementation

override public void CreatePages()

{

( new SkillsPage() );

( new EducationPage() );

( new ExperiencePage() );

}

}

// "ConcreteCreator"

class Report : Document

// Factory Method implementation override public void CreatePages()

{

( new IntroductionPage() );

( new ResultsPage() );

( new ConclusionPage() );

( new SummaryPage() );

( new BibliographyPage() );

}

}

///

/// FactoryMethodApp test

///

class FactoryMethodApp

{

public static void Main( string[] args )

{

Document[] docs = new Document[ 2 ];

// Note: constructors call Factory Method docs[0] = new Resume();

docs[1] = new Report();

// Display document pages

foreach( Document document in docs ) {

( "" + document + " ------- " );

foreach( Page page in )

( " " + page );

}

}

}

软件设计模式复习

创建型模式概述 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。 模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等),这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。模式定义 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 模式分析 将对象的创建和对象本身业务处理分离可以降低系统的耦合度,使得两者修改起来都相对容易。 在调用工厂类的工厂方法时,由于工厂方法是静态方法,使用起来很方便,可通过类名直接调用,而且只需要传入一个简单的参数即可,在实际开发中,还可以在调用时将所传入的参数保存在XML等格式的配置文件中,修改参数时无须修改任何Java源代码。 简单工厂模式最大的问题在于工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,这一点与开闭原则是相违背的。 简单工厂模式的要点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。 简单工厂模式的不足 在简单工厂模式中,只提供了一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类。简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须修改工厂类,加入必要的处理逻辑,这违背了“开闭原则”。在简单工厂模式中,所有的产品都是由同一个工厂创建,工厂类职责较重,业务逻辑较为复杂,具体产品与工厂类之间的耦合度高,严重影响了系统的灵活性和扩展性,而工厂方法模式则可以很好地解决这一问题。 模式动机 考虑这样一个系统,按钮工厂类可以返回一个具体的按钮实例,如圆形按钮、矩形按钮、菱形按钮等。在这个系统中,如果需要增加一种新类型的按钮,如椭圆形按钮,那么除了增加一个新的具体产品类之外,还需要修改工厂类的代码,这就使得整个设计在一定程度上违反了“开闭原则”。 模式定义 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。 模式分析 工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了面向对象的多态性,工厂方

java抽象工厂模式的实现实例

抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。 当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。 每一个模式都是针对一定问题的解决方案,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结果。 下面是一个java抽象工厂的实现实例. 我们以交通工具(Vihicle),食品(Foot),武器(Weapon)为抽象产品类为例: 交通工具(Vihicle) public abstract class Vihicle { public abstract void run(); } 食品(Foot) public abstract class Foot { public abstract void printName(); } 武器(Weapon) public abstract class Weapon { public abstract void shoot(); } 这三种抽象产品类都有两种子类的实现: 交通工具(Vihicle)有实现类Car,Broom public class Car extends Vihicle{ public void run(){ System.out.println("冒着烟奔跑中的Car..."); } } public class Broom extends Vihicle{ public void run(){ System.out.println("一路沙尘暴飞奔而来.."); } } 食品(Foot)有实现类Mushroom,Apple

工厂供电课程设计示例

工厂供电课程设计示例

工厂供电课程设计示例 一、设计任务书(示例) (一)设计题目 X X机械厂降压变电所的电气设计 (二)设计要求 要求根据本厂所能取得的电源及本厂用电负荷的实际情况,并适当考虑到工厂的发展,按照安全可靠、技术先进、经济合理的要求,确定变电所的位置和型式,确定变电所主变压器的台数、容量与类型,选择变电所主接线方案及高低压设备和进出线,确定二次回路方案,选择整定继电保护,确定防雷和接地装置。最后按要求写出设计说明书,绘出设计图纸。 (三)设计依据 1、工厂总平面图,如图11-3所示 2、工厂负荷情况本厂多数车间为两班制,年最大负荷利用小时为4600 h ,

日最大负荷持续时间为6 h 。该厂除铸造车间、电镀车间和锅炉房属于二级负荷外,其余均属于三级负荷。低压动力设备均为三相,额定电压为380伏。电气照明及家用电器均为单相,额定电压为220伏。本厂的负荷统计资料如表11-3所示。 表11-3 工厂负荷统计资料(示例)

3、供电电源情况按照工厂与当地供电部门签定的供用电合同规定,本厂可由附近一条10KV的公用电源干线取得工作电源。该干线的走向参看工厂总平面图。该干线的导线型号为LGJ-150 ,导线为等边三角形排列,线距为 2 m;干线首端(即电力系统的馈电变电站)距离本厂约8 km。干线首端所装设的高压断路器断流容量为500 MV A。此断路器配备有定时限过电流保护和电流速断保护,定时限过电流保护整定的动作时间为 1.7 s。为满足工厂二级负荷的要求,可采用高压联络线由邻近单位取得备用电源。已知与本厂高压侧有电气联系的架空线路总长度为80 km,电缆线路总长度为25 km 。 4、气象资料本厂所在地区的年最高气温为38°C,年平均气温为23°C,年最低气温为-8°C,年最热月平均最高气温为33°C,年最热月平均气温为26 °C,年最热月地下0.8m处平均温度为25°C,当地主导风向为东北风,年雷暴日数为20 。

(工厂管理)J设计模式之工厂模式(F)

Java设计模式之工厂模式(Factory) 时间:2009-08-04 17:23 来源:未知作者:和水柔石 CSDN IE QQ百度我挖Google POCO Yahoo新浪365Key天极和讯博拉Live奇客鲜果收客饭否叽歪挖客 核心提示:作者:和水柔石一、引子话说十年前,有一个爆发户,他家有三辆汽车(Benz (奔驰)、Bmw (宝马)、Audi (奥迪)看来这人比较爱国,没有日本车),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz 车后跟司机说开奔驰车!,坐上Bmw 后他说开 作者:和水柔石 一、引子 话说十年前,有一个爆发户,他家有三辆汽车(Benz (奔驰)、Bmw (宝马)、Audi (奥迪)看来这人比较爱国,没有日本车),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz 车后跟司机说" 开奔驰车!" ,坐上Bmw 后他说" 开宝马车!" ,坐上Audi 后他说" 开奥迪车!" 。你一定说:这人有病!直接说开车不就行了?!而当把这个爆发户的行为放到我们程序语言中来,我们发现C 语言一直是通过这种方式来坐车的!幸运的是,这种有病的现象在OO 语言中可以避免了。下面以Java 语言为基础来引入我们本文的主题:工厂模式!! 二、简介 工厂模式主要是为创建对象提供了接口。工厂模式按照《Java 与模式》中的提法分为三类: 1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一类。下面是使用工厂模式的两种情况: 1. 在编码时不能预见需要创建哪种类的实例。 2. 系统不应依赖于产品类实例如何被创建、组合和表达的细节 三、简单工厂模式 顾名思义,这个模式本身很简单,而且使用在业务较简单的情况下。 它由三种角色组成(关系见下面的类图): 1、工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java 中它往往由一个具体类实现。 2、抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java 中由接口或者抽象类来实现。 3、具体产品角色:工厂类所创建的对象就是此角色的实例。在java 中由一个具体类实现。

抽象工厂模式

抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂模式的用意。 每个模式都是针对一定问题的解决方案。抽象工厂模式面对的问题是多产品等级结构的系统设计。 在学习抽象工厂具体实例之前,应该明白两个重要的概念:产品族和产品等级。 产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。比如AMD的CPU和ADM芯片的主板,组成一个家族。Intel的CPU和Intel芯片的主板,又组成一个家族。而这两个家族都来自于两个产品等级:CPU,主板。一个等级结构是由相同的结构的产品组成,示意图如下: 理解这个产品结构是理解抽象工厂模式的关键所在,所以我不惜花费时间来画此图。如果领悟不到此图的含义,就无法区分工厂方法模式和抽象工厂模式的区别。 从上图可以看出,抽象工厂模式的每个工厂创造出来的都是一族产品,而不是一个或者一组。组是可以随意组合的!其实两个就这点点差别,呵呵,估计现在你已经差不多明白了抽象工厂模式的含义。不废话了,看个例子,真相将大白于天下! 1.3.1 抽象工厂模式在农场中的实现 1.3.1.1 背景 聪明的农场主总是让自己的庄园越来越有价值,“农场”在经历了简单工厂模式和工厂模式后,不断的扩大生产。如今,再次面临新的大发展,一项重要的工作就是引进塑料大棚技术,在大棚里种植热带(Trop ical)和亚热带(Northern)的水果和蔬菜,用以满足市场需求,获取更大的利益。 1.3.1.2 产品角色图 经过分析,对产品角色进行分析得出下图

1.3.1.3 系统设计 经过分析,所谓的各个园丁其实就是工厂角色,而蔬菜和水果则是产品角色。将抽象工厂模式用于农场中,系统设计图如下: 1.3.1.4 实现源码

供用电系统课程设计报告

供用电系统课程设计报告

供用电系统课程设计 (报告书范例) 姓名: 班级: 学号: 时间:

工厂供电课程设计任务书 一、设计题目:XX机械厂降压变电所的电气设计。 二、设计要求: 要求根据本厂所能取得的电源及本厂用电负荷的实际情况,并适当考虑到工厂生产的发展,按照安全可靠、技术先进、经济合理的要求,确定变电所的位置与形式,确定变电所主变压器的台数与容量、类型,选择变电所主结线方案及高低压设备和进出线,确定二次回路方案,选择整定继电保护装置,确定防雷和接地装置,最后按要求写出设计说明书,绘出设计图样。 三、设计依据: 1.工厂总平面图: 2.工厂负荷情况:本厂多数车间为两班制,年最大负荷利用小时为2500h,日最大负荷持续时间为5h。该厂除铸造车间、电镀车间和锅炉房属二级负荷外,其余均属三级负荷。低压动力设备均为三相,额定电压为380V。电气照明及家用电器均为单相,额定电压为220V。本厂的负荷统计资料如表1所示。

表1 工厂负荷统计资料 3.供电电源情况:按照工厂与当地供电部门签订的供电协议规定,本厂可由附近一条10KV的公用电源干线取得工作电源。该干线的走向参看工厂总平面图。该干线的导线牌号为LGJ-150,导线为等边三角形排列,线距为1.5m;干线首端(即电力系统的馈电变电站)距离本厂约7km。干线首端所装设的高压断路器断流容量为500MVA。此断路器配备有定时限过流保护和电流速断保护,定时限过电流保护整定的动作时间为1.7s。为满足工厂二级负荷的要求,可采用高压联

络线由邻近的单位取得备用电源。已知与本厂高压侧有电气联系的架空线路总长度为50km,电缆线路总长度为20km。 4.气象资料:本场所在地区的年最高气温为35o C,年平均气温为23o C,年最低气温为-8o C,年最热月平均最高气温为33o C,年最热月平均气温为26 o C,年最热月地下0.8m处平均温度为250C。当地主导风向为东北风,年雷暴日数为20。 5.地质水文资料:本厂所在地区平均海拔500m,地层以沙粘土为主;地下水位为1m。 6.电费制度:本厂与当地供电部门达成协议,在工厂变电所高压侧计量电能,设专用计量柜,按两部电费制交纳电费。每月基本电费按主变压器容量计为15元/kVA,动力电费为0.2元/kW.h,照明(含家电)电费为0.5元/kW.h。工厂最大负荷时的功率因数不得低于0.9。此外,电力用户需按新装变压器容量计算,一次性地向供电部门交纳供电贴费:6~10kV为800元/kVA。 四、设计任务: 要求在规定时间内独立完成下列工作量: 1、设计说明书,需包括: 1)前言。2)目录。3)负荷计算和无功功率补偿。4)变电所位置和型式的选择。5)变电所主变压器台数和容量、类型的选择。6)变电所主结线方案的设计。7)短路电流的计算。8)变电所一次设备的选择与校验。9)变电所进出线的选择和校验。10)变电所继电保护的方案选择。11)附录——参考文献。

工厂模式有以下几种形态

工厂模式有以下几种形态: 简单工厂(Simple Factory)模式 工厂方法(Factory Method)模式,又称多形性工厂(Polymorphic Factory)模式 抽象工厂(Abstract Factory)模式,又称工具箱(Kit或Toolkit)模式 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化, 如同一个交通警察站在来往的车辆流中,决定放行那一个方向的车辆向那一个方向流动一样。 工厂方法模式是简单工厂模式的进一步抽象化和推广,工厂方法模式里不再只由一个工厂类决定那一个产品类应当被实例化,这个决定被交给子类去作。

工厂方法模式和简单工厂模式在定义上的不同是很明显的。工厂方法模式的核心是一个抽象工厂类,而不像简单工厂模式, 把核心放在一个实类上。工厂方法模式可以允许很多实的工厂类从抽象工厂类继承下来, 从而可以在实际上成为多个简单工厂模式的综合,从而推广了简单工厂模式。 反过来讲,简单工厂模式是由工厂方法模式退化而来。设想如果我们非常确定一个系统只需要一个实的工厂类, 那么就不妨把抽象工厂类合并到实的工厂类中去。而这样一来,我们就退化到简单工厂模式了。 抽象工厂模式是所有形态的工厂模式中最为抽象和最具广泛性的一种形态,抽象工厂模式是工厂方法模式的进一步扩广化和抽象化。如下图:

在抽象工厂模式中,抽象产品(AbstractProduct) 可能是一个或多个,从而构成一个或多个产品族(Product Family)。在只有一个产品族的情况下,抽象工厂模式实际上退化到工厂方法模式。 总结:简单工厂模式是由一个具体的类去创建其他类的实例,父类是相同的,父类是具体的。 工厂方法模式是有一个抽象的父类定义公共接口,子类负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成。 抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类。它针对的是有多个产品的等级结构。而工厂方法模式针对的是一个产品的等级结构。

低压配电系统的工厂供电课程设计知识分享

低压配电系统的工厂供电课程设计 姓 名 学 号 院、系、部 电气工程系 班 号 完成时间 2012年6月18日 ※※※※※※※※※ ※ ※ ※ ※ ※ ※ 2009级 工厂供电课程设计

设计任务书 一、设计内容: (1)由总降压变电所的配出电压和用电设备的电压要求,参考国际规定的标准电压等级确定车间变电所的电压级别。 (2)计算负荷采用需用的系数法,计算出单台设备支线、用电设备组干线和车间变电所低压母线和进线的计算负荷。 (3)由计算负荷结果,确定补偿方式,计算出补偿容量,选择电容器个数和电容柜个数。 (4)按对负荷可靠性要求,确定车间变电所电气主接线。 (5)按车间变电所低压母线的计算负荷,确定变电器的容量和台数。 (6)导线截面积的选择,支线和干线按发热条件选择,进线电缆按经济电缆密度选择,按允许发热,电压损耗进行校验。 (7)短路电流计算,绘制计算电路和等值电路图,确定短路点,计算出各短路点短路电流值及短路容量。 (8)车间变电所低压母线按发热条件选择,按短路的热合力校验。 (9)按国家规定的标准符号和图符,用CAD画出车间变电所的电气主接线图、车间配电系统和配电平面图。 二、设计条件: (1)机加车间符合全部为三级负荷,对供电可靠性要求不高。

(2)车间平面布置图如下图所示 (3)车间电气设备各细表如下表所示 设备代号设备名称台数单台容量(kW)效率功率因数启动倍数备注1~3 普通车床C630-1 3 7.6 0.88 0.81 6 4 内圆磨床M2120 1 7.2 5 0.88 0.83 6 5,16 砂轮机S3SL-300 2 1.5 0.92 0.82 6.5 6 平面磨床M7130 1 7.6 0.88 0.82 6 7~9 牛头刨床B6050 3 4 0.87 0.82 6 11,12 普通车床C6140 2 6.125 0.89 0.81 6 13~15 普通车床C616 3 4.6 0.90 0.81 6 17,18 单臂龙门刨床B1012 2 67.8 0.86 0.81 2.5 19 龙门刨床B2016 1 66.8 0.86 0.81 2.5 20,21 普通车床C630 2 10.125 0.88 0.81 6 22 立式钻床Z535 1 4.625 0.90 0.80 6 23 立式车床C534J1 1 80 0.86 0.80 3 24 摇臂钻床Z35 1 8.5 0.87 0.82 5.5

设计模式简单工厂

简单工厂设计模式 目录 1.1摘要 (2) 2.1关键字 (2) 3.1开发工具 (2) 4.1简单工厂模式动机与定义: (2) 4.1.1模式动机 (2) 4.1.2模式定义 (2) 5.1简单工厂模式结构 (3) 6.1简单工厂模式实例: (4) 6.1.1代码分析 (4) 6.1.1.1Product(Shape抽象类)代码: (4) 6.1.1.2ConcreteProduct(Juxing,YuanXing,SanJiao具体产品类)代码:5 JuXing类: (5) YuanXing类: (6) SanJiao类: (6) 6.1.1.3Factory(Factory类)代码: (7) 6.1.1.4 (main类): (7) 6.1.1.5运行结果: (10) 7.1结论 (10) 8.1参考文献: (10)

1.1摘要 本文从面向对象的角度对java接口的概念、作用以及使用它的好处做分析,讲解面向接口编程的方法,结合初步接触软件开发的人员习惯,从简单工厂设计模式的概念和其结构以及用途进行解析,重点讲解简单工厂设计模式在软件开发过程中的作用和好处,通过一些实例来说明简单工厂设计模式的特点。 2.1关键字 面向对象;java接口;接口编程;简单工厂设计模式。 3.1开发工具 Eclipse java语言开发 4.1简单工厂模式动机与定义: 在实际的软件开发过程中有时需要创建一些来自于相同父类的类的实例,为此可以专门定义一个类来负责创建这些类的实例,这些被创建的实例具有共同的父类。在这种情况下,可以通过传入不同的参数从而获取不同的对象,理由Java语言的特征,习惯上将创建其他类实例的方法定义为static方法,外部不需要实例化这个类就可以直接调用该方法来获得需要的对象,该方法也成为静态工厂方法。 4.1.1模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮,矩形按钮等),这些按钮都源自同一个基类,不过在继承基类之后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。 4.1.2模式定义 简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。

5.抽象工厂模式-单例模式答案

(4) 抽象工厂模式 电脑配件生产工厂生产内存、CPU等硬件设备,这些内存、CPU的品牌、型号并不一定相同,根据下面的“产品等级结构-产品族”示意图,使用抽象工厂模式实现电脑配件生产过程并绘制相应的类图,绘制类图并编程实现。 interface CPU {

void discribe(); } interface RAM { void discribe(); } class PcCPU implements CPU { public void discribe() { System.out.println("PcCPU"); } } class MacCPU implements CPU { public void discribe() { System.out.println("MacCPU"); } } class PcRAM implements RAM { public void discribe() { System.out.println("PcRAM"); } } class MacRAM implements RAM { public void discribe() { System.out.println("MacRAM"); } } interface ComputerPartsFactory { CPU produceCPU(); RAM produceRAM();

} class PcFactory implements ComputerPartsFactory { public PcCPU produceCPU() { System.out.println("PcCPU produced!"); return new PcCPU(); } public PcRAM produceRAM() { System.out.println("PcRAM produced!"); return new PcRAM(); } } class MacFactory implements ComputerPartsFactory { public MacCPU produceCPU() { System.out.println("MacCPU produced!"); return new MacCPU(); } public MacRAM produceRAM() { System.out.println("MacRAM produced!"); return new MacRAM(); } } class ComputerPartsClient { public static void main(String a[]) { ComputerPartsFactory factory; CPU cpu; RAM ram; factory=(ComputerPartsFactory)XMLUtil.getBean();//Pc OR Mac cpu=factory.produceCPU(); cpu.discribe(); ram=factory.produceRAM(); ram.discribe(); } }

工厂供电课程设计报告

工厂供电课程设计报告 题目XX机械厂降压变电所的电气设计 姓名 学号 班级 指导老师 完成日期2014.5.24

一、设计任务书 (一)设计题目 xx机械厂降压变电所的电气设计 (二)设计要求 要求根据本厂所能取得的电源及本厂用电负荷的实际情况,并适当考虑到工厂生产的发展,按照安全可靠、技术先进、经济合理的要求,确定变电所的位置与型式,确定变电所主变压器的台数与容量、类型,选择变电所主结线方案及高低压设备和进出线,确定二次回路方案,选择整定继电保护装置,确定防雷和接地装置,最后按要求写出设计说明书,绘出设计图样。 (三)设计依据 1.工厂总平面图 图11—2××机械厂总平面图 2.工厂负荷情况本厂多数车间为两班制,年最大负荷利用小时为4200h,日最大负荷持续时间为6 h。该厂除铸造车间、电镀车间和锅炉房属二级负荷外,其余均属三级负荷。低压动力设备均为三相,额定电压为380V。电气照明及家用电器均为单相,额定电压为220V。本厂的负荷统计资料如表1—74所示。? 表1-74 工厂负荷统计资料

3.供电电源情况按照工厂与当地供电部门签订的供用电协议规定,本厂可由附近一条10 kV 的公用电源干线取得工作电源。该干线的走向参看工厂总平面图。该干线的导线牌号为LGJ -150,导线为等边三角形排列,线距为1.5m;干线首端(即电力系统的馈电变电站)距离本厂约6 km。干线首端所装设的高压断路器断流容量为500 MV A。此断路器配备有定时限过电流保护种电流速断保护,定时限过电流保护整定的动作时间为1.6s。为满足工厂二级负荷的要求,可采用高压联络线由邻近的单位取得备用电源。已知与本厂高压侧有电气联系的架空线路总长度为70 km,电缆线路总长度为15 km。 4.气象资料本厂所在地区的年最高气温为35℃,年平均气温为26℃,年最低气温为-100C,年最热月平均最高气温为35℃,年最热月平均气温为27℃,年最热月地下o.8m处平均温度为24℃。当地主导风向为东南风,年雷暴日数为15。 5.地质水文资料本厂所在地区平均海拔600m。地层以粘土(土质)为主;地下水位为3m。 6.电费制度本厂与当地供电部门达成协议,在工厂变电所高压侧计量电能,设专用计量柜,按两部电费制交纳电费。每月基本电费按主变压器容量计为18元/kV A,动力电费为0.20元/kw·h,照明(含家电)电费为0.56元/kw·h。工厂最大负荷时的功率因数不得低于0.9。此外,电力用户需按新装变压器容量计算,一次性地向供电部门交纳供电贴费:6~lOkV为800元/kV A 二、设计说明书 (一)负荷计算和无功功率补偿

工厂供电课程设计

本科课程设计题目: 院(系)信息科学与工程学院 专业电气工程及其自动化 届别 学号 姓名 指导老师 华侨大学教务处印制 2013年4月21号

目录 第1章概述....................................................................................................错误!未定义书签。第2章负荷计算与负荷等级确定...........................................................................错误!未定义书签。第3章变压器选择及主接线设计...........................................................................错误!未定义书签。第4章短路电流计算 . (10) 第5章电气设备选择 (17) 第6章课设体会及总结 (20) 参考文献 (21) 附录 (22)

第1章概述 通过这个供配电系统的设计,能对工厂供电的知识有一个系统的认识和更深入的了解,对书中的很多理论知识能更深入了解,能将书中的知识都系统化。本次课程设计是对南阳防爆厂降压变电所的电气设计,设计的主要内容包括: (1)负荷计算与负荷等级确定; (2)变压器选择与主接线设计; (3)短路电流计算; (4)电气设备选择; 后有此次课程设计的体会及总结和参考文献. 由于设计者知识掌握的深度和广度有限,很多知识都只能参考网上知识,所以本设计尚有不完善的地方,敬请老师批评指正! 设计任务如下: (一)设计题目 南阳防爆厂降压变电所的电气设计 (二)设计要求 要求根据本厂所能取得的电源及本厂用电负荷的实际情况,并适当考虑到工厂生产的发展,按照安全可靠、技术先进、经济合理的要求,确定变电所的位置与型式,确定变电所主变压器的台数与容量、类型,选择变电所主结线方案及高低压设备和进出线,确定一次回路方案,最后定出设计说明书。 (三)设计依据 1.工厂总平面图,如图(1)所示。 2.工厂负荷情况:本厂多数车间为两班制,年最大负荷利用小时为4000h,日最大负荷持续时间为10h。该厂除铸造车间、锻压车间和锅炉房属二级负荷外,其余均属三级负荷。低压动力设备均为三相,额定电压为380V。照明及家用电器均为单相,额定电压为220V。本厂的负荷统计资料如表(1)所示。 3.供电电源情况:按照工厂与当地供电部门签订的供用协议规定,本厂可由附近一条35kV的公用电源干线取得工作电源。该干线的走向参看工厂总平面图。该干线的导线牌号为LGJ—120导线为等边三角形排列,线距为1m;干线首端(即电力系统的馈电变电电站)距离本厂约20km,该干线首端所装高压断路器300MV A,此断路器配备有定时限过电流保护和电流速断保护,其定时限过电流保护整定的动作时间为1.5s。为满足工厂二级负荷的要求,可采用联络线由邻近的单位取得备用电源。已知与本厂高压侧有电气联系的架空线路总长度达100km,电缆线路总长度达80km。 4.气象资料本厂所在地区的年最高气温为37 ℃,年平均气温为24℃,年最低气温为-8℃,年最热月平均最高气温为33℃,年最热月平均气温为26℃,年最热月地下0.8处平均温度为25℃。当地主导风向为东北风,年雷暴是数为20。 5.工厂最大负荷时的功率因数不得低于0.92。 主要参考资料 1 刘介才主编供配电技术北京:机械工业出版社 2 张华主编电类专业毕业设计指导北京:机械工业出版社 3 王荣藩编著工厂供电设计与指导天津:天津大学出版社

设计模式试卷

设计模式期中考试试题 一:单项选择(共20道,每道2分) 1、设计模式一般用来解决什么样的问题( ) A.同一问题的不同表相B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 2、下列属于面向对象基本原则的是( ) A.继承 B.封装 C.里氏代换D都不是 3、Open-Close原则的含义是一个软件实体( ) A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭 C.应当对继承开放,对修改关闭 D.以上都不对 4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。 A.创建型 B.结构型C行为型D.以上都可以 5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( )的表述 A.开-闭原则 B.接口隔离原则 C.里氏代换原则 D.依赖倒转原则 6、设计模式的两大主题是( ) A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 7、“不要和陌生人说话” 是( )原则的通俗表述 A.接口隔离 B.里氏代换 C.依赖倒转 D.迪米特:一个对象应对其他对象尽可能少的了解 8、构造者的的退化模式是通过合并()角色完成退化的。 A.抽象产品B产品C创建者D使用者 9、以下关于简单工厂模式叙述错误的是() A 它属于GoF23种设计模式 B 它是最简单的设计模式之一 C 它是学习其他创建型模式的基础 D 它只需要记住一个简单的参数即可获得所需对象的实例 E 它类中的方法通常为静态方法 F 它返回的类都有一个公共的父类和公共的方法 10、对象适配器模式是()原则的典型应用。 A.合成聚合复用原则 B.里式代换原则 C.依赖倒转原则 D.迪米特法则 D.以上表述全部错误。 11.对于依赖倒转的表述错误的是() A.依赖于抽象而不依赖于具体,也就是针对接口编程。 B.依赖倒转的接口并非语法意义上的接口,而是,一个类对其他对象进行调用时,所知道的方法集合。 C.从选项B的角度论述,一个对象可以有多个接口。 D.实现了同一接口的对象,可以在运行期间,顺利地进行替换。而且不必知道所示用的对象是那个实现类的实例。 E.此题没有正确答案。 12. 现有5个产品族,分布于3各不同的产品等级结构,只要指明一个产品所处的产品族以及它所在的等级结构,就可以唯一地确认这个产品。那么使用抽象工厂方法模式只需要提供

抽象工厂-模式设计

?概述 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。怎么应对这种变化?怎么绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程式和这种“多系列具体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 模型图 逻辑模型: 物理模型: 生活中的例子 抽象工厂的目的是要提供一个创建一系列相关或相互依赖对象的接口,而不必指定他们具体的类。这种模式能汽车制造厂所

使用的金属冲压设备中找到。这种冲压设备能制造汽车车身部件。同样的机械用于冲压不同的车型的右边车门、左边车门、右前挡泥板、左前挡泥板和引擎罩等等。通过使用转轮来改动冲压盘,这个机械产生的具体类能在三分钟内改动。 抽象工厂之新解 虚拟案例 中国企业需要一项简单的财务计算:每月月底,财务人员要计算员工的工资。 员工的工资= (基本工资+ 奖金- 个人所得税)。这是个放之四海皆准的运算法则。 为了简化系统,我们假设员工基本工资总是4000美金。 中国企业奖金和个人所得税的计算规则是: 奖金= 基本工资(4000) * 10% 个人所得税= (基本工资+ 奖金) * 40% 我们目前要为此构建一个软件系统(代号叫Softo),满足中国企业的需求。 案例分析 奖金(Bonus)、个人所得税(Tax)的计算是Softo系统的业务规则(Service)。 工资的计算(Calculator)则调用业务规则(Service)来计算员工的实际工资。 工资的计算作为业务规则的前端(或客户端Client)将提供给最终使用该系统的用户(财务人员)使用。

工厂供电课程设计作业

一、工厂供电的意义和要求 工厂供电,就是指工厂所需电能的供应和分配,亦称工厂配电。 众所周知,电能是现代工业生产的主要能源和动力。电能既易于由其它形式的能量转换而来,又易于转换为其它形式的能量以供应用;电能的输送的分配既简单经济,又便于控制、调节和测量,有利于实现生产过程自动化。因此,电能在现代工业生产及整个国民经济生活中应用极为广泛。 在工厂里,电能虽然是工业生产的主要能源和动力,但是它在产品成本中所占的比重一般很小(除电化工业外)。电能在工业生产中的重要性,并不在于它在产品成本中或投资总额中所占的比重多少,而在于工业生产实现电气化以后可以大大增加产量,提高产品质量,提高劳动生产率,降低生产成本,减轻工人的劳动强度,改善工人的劳动条件,有利于实现生产过程自动化。从另一方面来说,如果工厂的电能供应突然中断,则对工业生产可能造成严重的后果。 因此,做好工厂供电工作对于发展工业生产,实现工业现代化,具有十分重要的意义。由于能源节约是工厂供电工作的一个重要方面,而能源节约对于国家经济建设具有十分重要的战略意义,因此做好工厂供电工作,对于节约能源、支援国家经济建设,也具有重大的作用。工厂供电工作要很好地为工业生产服务,切实保证工厂生产和生活用电的需要,并做好节能工作,就必须达到以下基本要求: (1)安全在电能的供应、分配和使用中,不应发生人身事故和设备事故。 (2)可靠应满足电能用户对供电可靠性的要求。 (3)优质应满足电能用户对电压和频率等质量的要求 (4)经济供电系统的投资要少,运行费用要低,并尽可能地节约电能和减少有色金属的消耗量。 此外,在供电工作中,应合理地处理局部和全局、当前和长远等关系,既要照顾局部的当前的利益,又要有全局观点,能顾全大局,适应发展。 二、工厂供电设计的一般原则 按照国家标准GB50052-95 《供配电系统设计规范》、GB50053-94 《10kv及以下设计规范》、GB50054-95 《低压配电设计规范》等的规定,进行工厂供电设计必须遵循以下原则:(1)遵守规程、执行政策; 必须遵守国家的有关规定及标准,执行国家的有关方针政策,包括节约能源,节约有色金属等技术经济政策。 (2)安全可靠、先进合理; 应做到保障人身和设备的安全,供电可靠,电能质量合格,技术先进和经济合理,采用效率高、能耗低和性能先进的电气产品。 (3)近期为主、考虑发展; 应根据工作特点、规模和发展规划,正确处理近期建设与远期发展的关系,做到远近结合,适当考虑扩建的可能性。 (4)全局出发、统筹兼顾。 按负荷性质、用电容量、工程特点和地区供电条件等,合理确定设计方案。工厂供电设计是整个工厂设计中的重要组成部分。工厂供电设计的质量直接影响到工厂的生产及发展。作为从事工厂供电工作的人员,有必要了解和掌握工厂供电设计的有关知识,以便适应设计工作的需要。 三、设计内容及步骤

工厂供电课程设计示例(完整资料).doc

【最新整理,下载后即可编辑】 工厂供电课程设计示例 一、设计任务书(示例) (一)设计题目 X X机械厂降压变电所的电气设计 (二)设计要求 要求根据本厂所能取得的电源及本厂用电负荷的实际情况,并适当考虑到工厂的发展,按照安全可靠、技术先进、经济合理的要求,确定变电所的位置和型式,确定变电所主变压器的台数、容量与类型,选择变电所主接线方案及高低压设备和进出线,确定二次回路方案,选择整定继电保护,确定防雷和接地装置。最后按要求写出设计说明书,绘出设计图纸。 (三)设计依据 1、工厂总平面图,如图11-3所示

2、工厂负荷情况本厂多数车间为两班制,年最大负荷利用小时为4600 h ,日最大负荷持续时间为6 h 。该厂除铸造车间、电镀车间和锅炉房属于二级负荷外,其余均属于三级负荷。低压动力设备均为三相,额定电压为380伏。电气照明及家用电器均为单相,额定电压为220伏。本厂的负荷统计资料如表11-3所示。 表11-3 工厂负荷统计资料(示例) 厂 房编号厂房 名称 负 荷 类 别 设备 容量 (KW) 需要 系数 Kd 功率 因数 cosφ P30 (KW) Q30 (Kvar) S30 (KVA) I30 (A) 1 铸造 车间 动 力 300 0.3 0.7 照 6 0.8 1.0

3、供电电源情况按照工厂与当地供电部门签定的供用电合同规定,本厂可由附近一条10KV的公用电源干线取得工作电源。该干线的走向参看工厂总平面图。该干线的导线型号为LGJ-150 ,导线为等边三角形排列,线距为2 m;干线首端(即电力系统的馈电变电站)距离本厂约8 km。干线首端所装设的高压断路器断流容量为500 MVA。此断路器配备有定时限过电流保护和电流速断保护,定时限过电流保护整定的动作时间为1.7 s。为满足工厂二级负荷的要求,可采用高压联络线由邻近单位取得备用电源。已知与本厂高压侧有电气联系的架空线路总长度为80 km,电缆线路总长度为25 km 。 4、气象资料本厂所在地区的年最高气温为38°C,年平均气温为23°C,年最低气温为-8°C,年最热月平均最高气温为

C#设计模式 之 工厂方法模式

工厂方法模式(Factory Method) 耦合关系: 动机(Motivation): 在软件系统中,由于需求的变化,"这个对象的具体实现"经常面临着剧烈的变化,但它却有比较稳定的接口。 如何应对这种变化呢?提供一种封装机制来隔离出"这个易变对象"的变化,从而保持系统中"其它依赖的对象"不随需求的变化而变化。 意图(Intent): 定义一个用户创建对象的接口,让子类决定实例哪一个类。Factory Method使一个类的实例化延迟到子类。 ----------《设计模式》GOF 结构图(Struct):

生活实例: 适用性: 1.当一个类不知道它所必须创建的对象类的时候。 2.当一个类希望由它子类来指定它所创建对象的时候。 3.当类将创建对象的职责委托给多个帮助子类中的某个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。 实例代码: CarFactory类: 1public abstract class CarFactory 2{ 3public abstract Car CarCreate(); 4} Car类: 1public abstract class Car 2{ 3public abstract void StartUp(); 4public abstract void Run(); 5public abstract void Stop(); 6 7} HongQiCarFactory类:

1public class HongQiCarFactory:CarFactory 2{ 3public override Car CarCreate() 4{ 5return new HongQiCar(); 6} 7} BMWCarFactory类: 1public class BMWCarFactory:CarFactory 2{ 3public override Car CarCreate() 4{ 5return new BMWCar(); 6} 7} HongQiCar类: 1public class HongQiCar:Car 2{ 3public override void StartUp() 4{ 5Console.WriteLine("Test HongQiCar start-up speed!"); 6} 7public override void Run() 8{ 9Console.WriteLine("The HongQiCar run is very quickly!"); 10} 11public override void Stop() 12{ 13Console.WriteLine("The slow stop time is3second"); 14} 15} BMWCar类: 1public class BMWCar:Car 2{

相关主题
文本预览
相关文档 最新文档