zoukankan      html  css  js  c++  java
  • 设计模式(二):工厂方法

    一、定义

    第一篇简单工厂方法讲到,后续添加服务的时候会直接修改工厂类,因为他控制了实例化哪个类。

    工厂方法,就让实例化推迟到了子类。怎样推迟?在子类中实例化呗。

    二、实例

    之前的服务不变,将简单的工厂的工厂类拆分成,每个case对应一个具体的工厂,这样也就只创建一个服务类。

    这里的两个工厂BLFactory和WCFFactory依次对应创建BL和WCf.

     

    服务类:

     public interface IService
        {
        }
    
    
     public class BL:IService
        {
          public  BL()
            {
                Console.WriteLine("启动 : BL服务.");           
            }
        }
    
    
    public class WCF : IService
        {
            public WCF()
            {
                Console.WriteLine("启动 : WCF服务.");
            }
        }

    工厂类:每个工厂对应创建一个服务,这样就将实例化推迟到了子类—具体的工厂

     public abstract class FactoryBuilder
        {
            public abstract IService Creat();        
        }
    
        public class WCFFactory : FactoryBuilder
        {
            public override IService Creat()
            {
                return new WCF();
            }
        }
    
        public class BLFactory : FactoryBuilder
        {
            public override IService Creat()
            {
                return new BL();
            }
        }

    客户端:

    //工厂模式
     Factory2.FactoryBuilder fb = new Factory2.WCFFactory();
     Factory2.IService service2 = fb.Creat();

    三、优缺点:

    优:将实例化推迟到了子类,具体的工厂类。每个工厂类维护创建一种服务。

    缺:如果后期需要添加更多的服务,那就可能需要创建更多的具体的工厂类。

    如果业务简单,我觉得不如用简单工厂,可读性高,一目了然。当然随着业务的复杂,我们可以升级这种设计。

  • 相关阅读:
    SELinux
    Horovod
    kubeflow
    k8s Custom Resource
    k8s Service
    k8s Deployment
    k8s ReplicaSet
    BytePS源码解析
    突破传统 OJ 瓶颈,“判题姬”接入云函数
    前端如何真正晋级成全栈:腾讯 Serverless 前端落地与实践
  • 原文地址:https://www.cnblogs.com/sunchong/p/5100541.html
Copyright © 2011-2022 走看看