| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2092 人关注过本帖
标题:c#中的工廠模式
只看楼主 加入收藏
rgbtdkjcel
Rank: 1
等 级:新手上路
帖 子:294
专家分:0
注 册:2007-3-26
结帖率:50%
收藏
 问题点数:0 回复次数:8 
c#中的工廠模式
請問一下,c#中的工廠模式是什麼意思呢??可不可以舉個例子呢??
搜索更多相关主题的帖子: 模式 
2008-03-01 14:53
dreamsfly
Rank: 2
等 级:论坛游民
帖 子:152
专家分:13
注 册:2007-6-29
收藏
得分:0 
专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。它又称为静态工厂方法模式,属于类的创建型模式。
简单工厂模式的UML类图(见右图)

简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
该模式中包含的角色及其职责
工厂(Creator)角色
简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。
抽象(Product)角色
简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
具体产品(Concrete Product)角色
简单工厂模式的特点:
简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。
在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。
不难发现,简单工厂模式的缺点也正体现在其工厂类上,由于工厂类集中了所有实例的创建逻辑,所以“高内聚”方面做的并不好。另外,当系统中的具体产品类不断增多时,可能会出现要求工厂类也要做相应的修改,扩展性并不很好。
以上不是我说的,是转的

www. 我的原创下载
2008-03-01 20:37
dreamsfly
Rank: 2
等 级:论坛游民
帖 子:152
专家分:13
注 册:2007-6-29
收藏
得分:0 
public abstract class VideoWiring
    {
        public abstract string PlayVideo();
    }



    public class Create
    {
        public static VideoWiring factory(string VideoName)
        {
            switch (VideoName)
            {
                case "DVD":
                    return new DVD();
                case "VCD":
                    return new VCD();
            }
            return null;
        }
    }
    public class VCD:VideoWiring
    {
        public override string PlayVideo()
        {
            return "正在播放播放VCD";
        }
    }

    public class DVD : VideoWiring
    {
        public override string PlayVideo()
        {
            return "正在播放播放DVD";
        }
    }
看下这个例子
 VideoWiring vw = Create.factory("DVD");
            textBox1.Text= vw.PlayVideo();
            vw = Create.factory("VCD");
            textBox1.Text+=vw.PlayVideo();

www. 我的原创下载
2008-03-01 21:00
dreamsfly
Rank: 2
等 级:论坛游民
帖 子:152
专家分:13
注 册:2007-6-29
收藏
得分:0 
按这个分析,工厂模式
可以简单理解,动态调用 对 抽象类 进行实现的类

www. 我的原创下载
2008-03-01 21:21
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 


工厂模式分为很多种工厂模式,有简单工厂,抽象工厂、工厂方法模式等等……都可以统称为工厂模式。

楼上概述的只是简单工厂模式……楼主这点要注意简单工厂不能代表工厂。

工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2008-03-02 10:29
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
打个比方吧,你更容易理解。

MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 摘自——追MM与23种设计模式

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2008-03-02 10:34
dreamsfly
Rank: 2
等 级:论坛游民
帖 子:152
专家分:13
注 册:2007-6-29
收藏
得分:0 
抽象工厂模式,我还不太明白,这个简单工厂模式 还好一点,呵呵

www. 我的原创下载
2008-03-02 23:18
快速回复:c#中的工廠模式
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019382 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved