zoukankan      html  css  js  c++  java
  • 我也设计模式——1.Factory Method

    工厂方法模式,就是使一个类的实例化延迟到子类——惰性声明
    UML图如下:

        public class Production { }

        
    public abstract class Creator
        
    {
            
    public abstract Production FactoryMathod();
        }


        
    public class ConcreteCreator : Creator
        
    {
            
    public override Production FactoryMathod()
            
    {
                
    return new Production();
            }

        }

    工厂方法模式无处不在,创建型模式都是依赖于工厂模式的。

    简单工厂Simple Factory,这是工厂方法模式的一个特例,因为该模式是通过switch分支(也有用if判断的),来决定最终生成哪一个对象的,而这个switch分支语句,嵌在一个静态方法中,这个改装就是简单工厂。


        public abstract class A
        
    {
            
    public abstract void Do();
        }


        
    public class A1 : A
        
    {
            
    public override void Do()
            
    {
                Console.WriteLine(
    "A1");
            }

        }


        
    public class A2 : A
        
    {
            
    public override void Do()
            
    {
                Console.WriteLine(
    "A2");
            }

        }


        
    public class CreateA
        
    {
            
    public static A CreateAFactory(int type)
            

                
    switch(type)
                
    {
                    
    case 1:
                        
    return new A1();
                        
    break;
                    
    case 2:
                    
    default:
                        
    return new A2();
                        
    break;
                }

            }

        }

    在Client端,只要使用            CreateA.CreateAFactory(1).Do();    就可以生成需要的对象

    简单工厂的缺点是,一旦增加新产品类,同时要实现抽象类中的所有方法;还有,一旦要修改抽象类中的方法,所有子类都要变动——扩展性差,不符合开闭原则。

    另外,简单工厂模式通常使用静态工厂方法,这使得无法由子类继承,造成工厂角色无法形成基于继承的等级结构。

  • 相关阅读:
    20189215 2018-2019-2 《密码与安全新技术专题》第5周作业
    2018-2019-2 20189215 《网络攻防技术》第五周作业
    Ubuntu18.04安装Openssl-1.1.1
    2018-2019-2 20189215 《网络攻防技术》第四周作业
    2018-2019-2 20189215 《网络攻防技术》第三周作业
    Python—构造单向链表数据类型
    Python—使用列表构造栈数据结构
    Python—快速排序算法
    Python—使用Json序列化Datetime类型
    Linux基本命令
  • 原文地址:https://www.cnblogs.com/Jax/p/912772.html
Copyright © 2011-2022 走看看