zoukankan      html  css  js  c++  java
  • 设计模式-----工厂模式

     工厂方法模式

         Factory Method,定义一个用于创建对象的接口。让子类决定实例化那一个类。工厂方法使一个类的实例化延迟到起子类。

    工厂方法模式的结构图

                                             
       以大话设计模式中学雷锋依旧在人间为实例
        
    //雷锋
        class LeiFeng
        {
            public void Sweep()
            {
                Console.WriteLine("扫地");
            }
            public void Wash()
            {
                Console.WriteLine("洗衣");
            }
            public void BuyRice()
            {
                Console.WriteLine("买米");
            }
        }
        //学雷锋的大学生
        class Undergraduate : LeiFeng
        { }
        //社区志愿者
        class Volunteer : LeiFeng
        { }
        
    
            //雷锋工厂
            interface IFactory
            {
                       
                LeiFeng CreateLeiFeng();
            }
            //学雷锋的大学生工厂
            class UndergraduateFactory:IFactory 
            {
                       
                public LeiFeng CreateLeiFeng()
                {
                    return new Undergraduate ();
                }
            }
            //社区志愿者工厂
            class VolunteerFactory:IFactory 
            {
                
                public LeiFeng CreateLeiFeng()
                {
                    return new Volunteer ();
                }
            }
    client代码
    static void Main(string[] args)
            {
                //工厂方法模式
                IFactory factory = new UndergraduateFactory();//要换成“社区志愿者”改动这里就能够
                LeiFeng student = factory.CreateLeiFeng();
    
                student.BuyRice();
                student.Sweep();
                student.Wash();
    
            }
    类图例如以下
          

       工厂模式相比简单工厂模式的长处

           在于遵循了开放-封闭原则(软件实体应该能够扩展。可是不能够改动,即对于扩展是开放的,对于更改是封闭的)同一时候依据依赖倒转原则(要针对接口编程,不要针对实现编程)把工厂类抽象出一个接口,这个接口仅仅有一个方法,就是穿件抽象产品的工厂方法。然后,全部的药生产详细类的工厂。就去实现这个接口,这样一个简单工厂模式的工厂类。变成了一个工厂抽象接口和多个详细生成对象的工厂,这样我们添加功能时就不须要更改原有的工厂,仅仅须要添加功能的类和对应的工厂类就能够了。






  • 相关阅读:
    Poj 1973 Software Company(二分+并行DP)
    Bellman-Ford算法及其队列优化(SPFA)
    Java程序打包成exe可执行文件
    zabbix监控入门初步
    网页解析器
    urllib2下载网页的三种方法
    ubuntu14.04允许root远程链接、修改主机名
    Iptalbes练习题(三)
    Iptalbes练习题(二)
    htop的使用
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6944655.html
Copyright © 2011-2022 走看看