• 工厂模式


    闭上眼睛回想一下我们的童年,于是一幕幕场景在脑海中如闪电般掠过,无忧无虑的笑脸,简单好玩的游戏,还有充满着各种色彩的奇思妙想,当然还有很多很多.......

    是呀!童年总是让人怀念的,人终究是要长大的,曾经的发小总是要各奔东西,曾经的同桌总是要穿上嫁衣

    他们都在自己的职业领域奋斗,拼搏着。(在此祝愿我所有的发小以及曾经一起学习生活过的同学们一切安好)

    小感慨一下,说这些只是因为

    今天遇到了小时候的一个玩伴,突然就想起了童年的很多事情,所以有感而发,在这里希望各位读者能耐心读下去.....

    我们暂且叫我的朋友鹏鹏吧,我听鹏鹏说他长大以后没有上大学而是去学厨师了,这些年厨艺也大增了很多,我们聊了很多,还谈到我的另一个发小丽丽,

    他说丽丽现在开了一家自己的美发沙龙店,生意还不错,让我有空可以去看看,我当然很乐意去了。

    下面我们就进入今天的正题吧,今天要说的是工厂模式,在学习工厂模式之前我建议大家先学习一下简单工厂模式

    工厂模式是这样定义的:定义一个用于创建对象的接口,

    让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。

    我们先来看看工厂模式的类图

    在上面的例子中我,鹏鹏,丽丽虽然是发小,但我们却从事了不同的职业,我上了大学,鹏鹏学了厨师,丽丽从事了理发行业

    下面让我们先来看看这个实例的类图

    下面我们就来定义一个接口来说明我们都有自己的工作

    interface Person
        {
            void Work();
        }

    下面是我以及的工作

    class My : Person
        {
            public void Work()
            {
                Console.WriteLine("上大学");
            }
        }

    下面是鹏鹏以及鹏鹏的工作

    class PengPeng : Person
        {
            public void Work()
            {
                Console.WriteLine("厨师");
            }
        }

    下面是丽丽以及丽丽的工作

     class LiLi : Person
        {
            public void Work()
            {
                Console.WriteLine("理发师");
            }
        }

    根据依赖倒转原则,我们把工厂类抽象出一个接口,这个接口只有一个方法,就是创建抽象产品的工厂方法。然后所有要生产具体类的工厂,就去实现这个接口

    于是我们增加"另一个人"时就不需要更改原有的工厂类了,只需要增加这个人的类及他所对应的工厂类就行了

    interface IFactory
        {
            Person CreatePerson();
        }
        class MyFactory : IFactory
        {
            public Person CreatePerson()
            {
                return new My();
            }
        }
        class PengPengFactory : IFactory
        {
            public Person CreatePerson()
            {
                return new PengPeng();
            }
        }
        class LiLiFactory : IFactory
        {
            public Person CreatePerson()
            {
                return new LiLi();
            }
        }

    工厂模式和简单工厂模式不同,他是针对每一个类建立一个工厂,当要使用这个类时,只需调用相应的工厂就行了

    客户端代码是这样的

    IFactory PPF = new PengPengFactory();
                Person pengpeng = PPF.CreatePerson();
                pengpeng.Work();

    工厂模式最大的优点就是遵循了开放—封闭原则,对扩展开放对修改封闭,降低了客户程序与产品对象之间的耦合。

  • 相关阅读:
    JDBC
    两道关于回溯法,分支限界法的算法题
    旅行售货员问题
    jdbc学习
    mysql简单练习
    取会邮件客户端中的密码
    触发器的使用
    事务的数据一致性测试
    读取其他软件listview控件的内容
    sqlserver2008 ,只能选C盘目录,不能选其它盘目录
  • 原文地址:https://www.cnblogs.com/woshilulin/p/3749927.html
Copyright © 2020-2023  润新知