第 8 章 工厂方法模式

工厂方法模式:

定义一个用户创建对象的接口,让子类决定实例化哪一个类,工厂方法是一个类的实例化延迟到了其子类。

工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,

工厂方法吧简单工厂的内部逻辑判断移到了客户端代码来进行。你想要加功能,本来是要改工厂类的,而现在是修改客户端。

 

    /// <summary>
    /// 雷锋
    /// </summary>
    public class LeiFeng
    {
        public void Wash()
        {
            Console.WriteLine("洗衣");
        }

        public void Sweep()
        {
            Console.WriteLine("扫地");
        }
    }

    /// <summary>
    /// 大学生
    /// </summary>
    public class Undergraduate : LeiFeng
    {

    }

    /// <summary>
    /// 社区志愿者
    /// </summary>
    public class CommunityVolunteer : LeiFeng
    {

    }

    /// <summary>
    /// 雷锋工厂
    /// </summary>
    interface IFactory
    {
        LeiFeng CreateLeiFeng();
    }

    /// <summary>
    /// 大学生雷锋工厂
    /// </summary>
    public class UndergraduateFactory : IFactory
    {
        public LeiFeng CreateLeiFeng()
        {
            return new Undergraduate();
        }
    }

    /// <summary>
    /// 社区志愿者雷锋工厂
    /// </summary>
    public class CommunityVolunteerFactory : IFactory
    {

        public LeiFeng CreateLeiFeng()
        {
            return new CommunityVolunteer();
        }
    }

客户端调用

IFactory factory = new UndergraduateFactory();
LeiFeng leifeng = factory.CreateLeiFeng();
leifeng.Sweep();
leifeng.Wash();

factory = new CommunityVolunteerFactory();
leifeng = factory.CreateLeiFeng();
leifeng.Sweep();
leifeng.Wash();

结果

时间: 2024-10-16 10:27:31

第 8 章 工厂方法模式的相关文章

设计模式之第1章-工厂方法模式(Java实现)

设计模式之第1章-工厂方法模式(Java实现) “我先来”,“不,老公,我先!”.远远的就听到几个人,哦不,是工厂方法模式和抽象工厂模式俩小夫妻在争吵,尼妹,又不是吃东西,谁先来不都一样(吃货的世界~).“抽象工厂模式,赶紧的自我介绍,工厂方法模式,你身为男人,要懂得绅士风度,lady first懂不懂,稍后再来,急什么.”(画外音:鱼哥,这是我家祖传的小吃,还有我爹的好酒blablabla),“哎呀,那个抽象工厂模式,阿姨喊你回家吃饭了.”“哦,我去去就回,等我啊.”工厂方法,赶紧的.“等等,

大话设计模式C++实现-第8章-工厂方法模式

一.UML图 二.概念 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法是一个类的实例化延迟到其子类. 三.包括的角色 (1)抽象工厂 (2)详细工厂 (3)抽象产品 (4)详细产品 四.优势 (1)工厂方法模式是对简单工厂模式的略微的改进.工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际工作推迟到子类中. (2)与简单工厂模式相比,制造产品的工厂类不再 仅仅有一个.而是每种详细产品类都相应一个生产它的详细工厂类. 而这些详细

第8章-工厂方法模式

1 /** 2 * 行为 3 * @author lucksheep 4 * 5 */ 6 public class LeiFeng { 7 8 public void Sweep(){ 9 System.out.print("\t扫地\t"); 10 } 11 12 public void Laundry(){ 13 System.out.print("\t洗衣\t"); 14 } 15 16 public void Cook(){ 17 System.out.p

第4章 创建型模式—工厂方法模式(2)

2. 工厂方法模式 2.1工厂方法模式的定义 (1)定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式使一个类的实例化延迟到其子类 ①Product:定义了工厂方法创建对象的接口.也就是实际需要使用的产品对象的接口 ②ConcreteProduct:具体的Product接口的实现对象. ③Factory(Creator):定义了工厂方法的抽象类并返回一个产品对象. ④ConcreteCreator:具体的创建器对象,该类实现和覆盖了父工厂类声明的方法.返回一个具体的Product实例

工厂方法模式

开放-封闭原则: 在设计模式中,对于不能修改,但可以扩展的思想也是一种重要的设计原则.比如国家对于香港的一国两制.大陆的社会主义是不可以更改的,但由于香港长期处于资本主义下,强制执行社会主义难免有些牵强,所以邓小平同志就用了开放-封闭原则,完美的解决了这一问题.在前期进行软件设计的时候,应该做好后期新增需求的准备.尽量做到新增需求时,不需要更改已有代码,而是新增代码,进行需求的扩展. 工厂方法模式: 问题抛出:在上一篇文章中,通过一个简单的两位数计算介绍了简单工厂模式.在这基础上,试想如果我们需

java设计模式:工厂方法模式(Factory Method)

工厂方法模式 返回设计模式目录 阅读目录: 简单工厂模式 介绍 UML类图 参考代码 总结 工厂方法模式 介绍 UML类图 参考代码 总结 前言: <大话设计模式>里有一小节叫'活字印刷,面向对象'的,讲了一个小故事,大意如下: 话说三国时期,曹操带领大军驻扎于赤壁.军船相连,气势恢宏,眼看要灭掉东吴,统一天下,曹操甚悦,于是大宴群臣.席间曹操诗兴大发,不觉吟道:"喝酒唱歌,人生真爽.--".众文武齐呼:"丞相好诗!".于是一臣子速命印刷工匠刻板印刷,以

设计模式之二:工厂方法模式

工厂方法模式(Factory Method): 定义:Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses(定义一个用于创建对象的接口,让子类决定实例化哪一个类. 工厂方法使一个类的实例化延迟到其子类). 在工厂方法模式中,抽象类Pr

【设计模式】工厂方法模式

简单工厂模式的最大长处在于工厂类中包括了必要的逻辑推断,依据client的选择条件动态实例化相关的类,对于client来说,去除了与详细产品的依赖.工厂方法模式的UML图例如以下: 比如在简单工厂模式中出现的工厂函数: Operation* FactoryFunction(double left, double right, char op) { switch (op) { case '+': return new Add(left, right); break; case '-': retur

(四) 工厂方法模式

转载: http://www.cnblogs.com/zuoxiaolong/p/pattern5.html 本章我们继续讨论新的设计模式,工厂方式模式,在这之前,LZ决定先给出引自其它地方的标准定义以及类图.  定义:工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色