工厂方法(Factory Method)模式
2005-10-13 19:48
441 查看
<!--
function ContentSize(size)
{
var obj=document.all.BodyLabel;
obj.style.fontSize=size+"px";
}
-->
>> 相关文章 全部相关文章 设计模式-简单工厂模式(SimpleFactory... (2004-12-23)
设计模式-工厂模式(手工作坊到工业化... (2004-12-23)
设计模式笔记-抽象工厂模式 (2004-12-23)
设计模式原型模式(Prototype)- 面馆里... (2004-12-23)
设计模式-建造模式(一碗牛肉面的制造... (2004-12-23)
>> 本文评论 发表评论
function ContentSize(size)
{
var obj=document.all.BodyLabel;
obj.style.fontSize=size+"px";
}
-->
|
<!-- linkset[0]=new Array() linkset[0][0]="<div class=/"menuitems/"><a href=/"list.aspx?cid=40/">爱心报道</a></div>" linkset[0][1]="<div class=/"menuitems/"><a href=/"list.aspx?cid=41/">娱乐休闲</a></div>" linkset[0][2]="<div class=/"menuitems/"><a href=/"list.aspx?cid=9/">网络文学</a></div>" linkset[0][3]="<div class=/"menuitems/"><a href=/"list.aspx?cid=39/">主题新闻</a></div>" linkset[0][4]="<div class=/"menuitems/"><a href=/"list.aspx?cid=75/">国防频道</a></div>" linkset[1]=new Array() linkset[1][0]="<div class=/"menuitems/"><a href=/"list.aspx?cid=10/">WebForm</a></div>" linkset[1][1]="<div class=/"menuitems/"><a href=/"list.aspx?cid=11/">WinForm</a></div>" linkset[1][2]="<div class=/"menuitems/"><a href=/"list.aspx?cid=15/">ADO.NET</a></div>" linkset[1][3]="<div class=/"menuitems/"><a href=/"list.aspx?cid=12/">图形图像</a></div>" linkset[1][4]="<div class=/"menuitems/"><a href=/"list.aspx?cid=13/">网络通讯</a></div>" linkset[1][5]="<div class=/"menuitems/"><a href=/"list.aspx?cid=14/">算法相关</a></div>" linkset[1][6]="<div class=/"menuitems/"><a href=/"list.aspx?cid=23/">WebServices</a></div>" linkset[1][7]="<div class=/"menuitems/"><a href=/"list.aspx?cid=16/">第三方控件</a></div>" linkset[1][8]="<div class=/"menuitems/"><a href=/"list.aspx?cid=24/">.NET资料</a></div>" linkset[1][9]="<div class=/"menuitems/"><a href=/"list.aspx?cid=27/">C# 2.0</a></div>" linkset[1][10]="<div class=/"menuitems/"><a href=/"list.aspx?cid=76/">项目源码分析</a></div>" linkset[2]=new Array() linkset[2][0]="<div class=/"menuitems/"><a href=/"list.aspx?cid=17/">Access</a></div>" linkset[2][1]="<div class=/"menuitems/"><a href=/"list.aspx?cid=18/">SQL Server</a></div>" linkset[2][2]="<div class=/"menuitems/"><a href=/"list.aspx?cid=19/">Oracle</a></div>" linkset[2][3]="<div class=/"menuitems/"><a href=/"list.aspx?cid=26/">数据库资料</a></div>" linkset[3]=new Array() linkset[3][0]="<div class=/"menuitems/"><a href=/"list.aspx?cid=37/">JavaScript技术</a></div>" linkset[3][1]="<div class=/"menuitems/"><a href=/"list.aspx?cid=20/">JavaScript资料</a></div>" linkset[4]=new Array() linkset[4][0]="<div class=/"menuitems/"><a href=/"list.aspx?cid=21/">HTML</a></div>" linkset[4][1]="<div class=/"menuitems/"><a href=/"list.aspx?cid=28/">CSS</a></div>" linkset[4][2]="<div class=/"menuitems/"><a href=/"list.aspx?cid=22/">相关资料</a></div>" linkset[5]=new Array() linkset[5][0]="<div class=/"menuitems/"><a href=/"topicnews.aspx?topicid=8/">架构模式开发</a></div>" linkset[5][1]="<div class=/"menuitems/"><a href=/"topicnews.aspx?topicid=7/">WSE应用</a></div>" linkset[5][2]="<div class=/"menuitems/"><a href=/"topicnews.aspx?topicid=6/">XML技术</a></div>" linkset[5][3]="<div class=/"menuitems/"><a href=/"topicnews.aspx?topicid=5/">点对点应用[P2P]</a></div>" linkset[5][4]="<div class=/"menuitems/"><a href=/"topicnews.aspx?topicid=4/">分布式数据库</a></div>" linkset[5][5]="<div class=/"menuitems/"><a href=/"topicnews.aspx?topicid=1/">Asp.net DataGri</a></div>" linkset[5][6]="<div class=/"menuitems/"><a href=/"topicnews.aspx?topicid=3/">.NET多线程</a></div>" linkset[5][7]="<div class=/"menuitems/"><a href=/"topicnews.aspx?topicid=9/">正则表达式</a></div>" linkset[6]=new Array() linkset[6][0]="<div class=/"menuitems/"><a href=/"list.aspx?cid=43/">系统分析</a></div>" linkset[6][1]="<div class=/"menuitems/"><a href=/"list.aspx?cid=44/">软件方法学</a></div>" linkset[6][2]="<div class=/"menuitems/"><a href=/"list.aspx?cid=45/">软件设计技术</a></div>" linkset[6][3]="<div class=/"menuitems/"><a href=/"list.aspx?cid=46/">软件过程体系</a></div>" linkset[6][4]="<div class=/"menuitems/"><a href=/"list.aspx?cid=47/">项目管理</a></div>" linkset[6][5]="<div class=/"menuitems/"><a href=/"list.aspx?cid=48/">软件文档</a></div>" linkset[6][6]="<div class=/"menuitems/"><a href=/"list.aspx?cid=49/">解决方案</a></div>" linkset[6][7]="<div class=/"menuitems/"><a href=/"list.aspx?cid=50/">其它相关</a></div>" linkset[6][8]="<div class=/"menuitems/"><a href=/"list.aspx?cid=74/">资料下载</a></div>" --> 首页 另类生活 .NET技术 数据库技术 JavaScript技术 网页设计相关 技术专题 项目体系 网络日志 网站论坛 |
放心去飞 → 项目体系 → 软件方法学 → 设计模式 | |||||
工厂方法(Factory Method)模式
一、 工厂方法(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() { Console.WriteLine("Bulb Light is Turned on"); } public override void TurnOff() { Console.WriteLine("Bulb Light is Turned off"); } } public class TubeLight : Light { public override void TurnOn() { Console.WriteLine("Tube Light is Turned on"); } public override void TurnOff() { Console.WriteLine("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 = c1.factory(); Light l2 = c2.factory(); l1.TurnOn(); l1.TurnOff(); Console.WriteLine("-----------------"); l2.TurnOn(); l2.TurnOff(); } }工厂方法的活动序列图 活动过程包括: 客户端创建BulbCreator对象,客户端持有此对象的类型是Creator,而实际类型是BulbCreator。然后客户端调用BulbCreator的factory方法,之后BulbCreator调用BulbLight的构造函数创造出产品BulbLight对象。 工厂方法模式与简单工厂模式再结构上的不同不是很明显。工厂方法类的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。 |
| |
【 评论 】 【 推荐 】 【 打印 】 【 字体:大 中 小 】 |
上一篇:抽象工厂(Abstract Factory)模式 下一篇:简单工厂(Simple Factory)模式 |
设计模式-工厂模式(手工作坊到工业化... (2004-12-23)
设计模式笔记-抽象工厂模式 (2004-12-23)
设计模式原型模式(Prototype)- 面馆里... (2004-12-23)
设计模式-建造模式(一碗牛肉面的制造... (2004-12-23)
<!-- function checkRemark() { var form=document.all.remarkForm; if (form.body.value=="") { alert("请填写评论内容"); form.body.focus(); return false; } if (form.username.value=="") { alert("请填写姓名"); form.username.focus(); return false; } if (form.body.value.length>200) { alert("评论内容不可以超过200字"); form.body.focus(); return false; } if (form.username.value.length>10) { alert("姓名不可以超过10个字"); form.username.focus(); return false; } form.submit.disabled=true; return true; } function showLen(obj) { document.all.bodyLen.value=obj.value.length; } --> 点评: 字数 姓名: d=new Date(); document.all.clientDate.value=d.getYear()+","+d.getMonth()+","+d.getDate()+","+ d.getHours() +","+ d.getMinutes() +","+ d.getSeconds(); | 尊重网上道德,遵守中华人民共和国的各项有关法律法规 承担一切因您的行为而直接或间接导致的民事或刑事法律责任 本站管理人员有权保留或删除其管辖留言中的任意内容 本站有权在网站内转载或引用您的评论 参与本评论即表明您已经阅读并接受上述条款 |
Copyright © www.PutFly.com 2004-2005 放心去飞 | ||
闽ICP备05013700号 |
相关文章推荐
- 浅谈JAVA设计模式之——工厂方法(FactoryMethod)
- 设计模式学习笔记:factory method(工厂方法)
- 面向对象:工厂方法(Factory Method)模式
- FactoryMethod(工厂方法)模式
- java与模式 工厂方法(factory method)
- 设计模式工厂方法(FactoryMethod)
- [设计模式-创建型]工厂方法(Factory Method)
- 跟着Android学设计模式:工厂方法(Factory method)
- 设计模式 工厂方法(Factory Method Pattern)
- 【设计模式】——工厂方法FactoryMethod
- 创建类模式(一):工厂方法(Factory Method)
- 设计模式示例一 Factory Method(工厂方法)
- Java设计模式二:抽象工厂模式(Abstract Factory)/工厂方法(Factory Method)
- 23种设计模式-FactoryMethod工厂方法
- c++ 设计模式8 (Factory Method 工厂方法)
- 设计模式-3.3 Factory Method(工厂方法) 对象创建型模式
- 设计模式学习笔记四:工厂方法(Factory Method)
- C#面向对象设计模式第五讲:Factory Method 工厂方法(创建型模式)
- 【设计模式基础】创建型模式 - 4 - 工厂方法(Factory Method)
- Java设计模式圣经连载(02)-工厂方法(Factory Method)模式