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();    就可以生成需要的对象

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

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

  • 相关阅读:
    jsp4个作用域
    jsp9个内置对象
    jsp指令
    jsp注释
    jsp原理
    java面试
    代理
    泛型
    exception
    基础
  • 原文地址:https://www.cnblogs.com/Jax/p/912772.html
Copyright © 2011-2022 走看看