zoukankan      html  css  js  c++  java
  • 工厂模式之我见

    实质:

    工厂模式是将对象的创建嫁祸给工厂类, 降低对象之间的耦合。

    使用实例:

    1、简单工厂---也叫静态工厂

    其精髓在于静态:当需要创建新对象时,只需通过静态方法直接调用创建即可,没有了工厂类,目标对象的创建。这也就形成了对原创建逻辑的重组与优化。

     public interface IService
            {
                bool Summit();
            }
            public class NormalOrderService : IService
            {
                public bool Summit()
                {
                    //TODO summit the normal order
                    return false;
                }
            }
            public class ApplyOrderService : IService
            {
                void CreateOrder();
                public bool Summit()
                {
                    CreateOrder();
                    //TODO summit the apply order
                    return false;
                }
            }
            public class BookOrderService : IService
            {
                bool CheckDate(DateTime time);
                public bool Summit()
                {
                    if (CheckDate(DateTime.Now))
                    {
                        //TODO Summit the bookOrder
                        return true;
                    }
                    else
                    { 
                        return false;
                    }
                }
            }
    
            public class ServiceFactory
            {
                public static  IService CreateService(string orderType)
                {
                    switch (orderType)
                    { 
                        case "Normal":
                            return new NormalOrderService();
                        case "Apply":
                            return new ApplyOrderService();
                        case "Book":
                            return new BookOrderService();
                        default:
                            return null;
                        }
                }
            }

    调用时直接调用ServiceFactory.CreateService().Summit();从而在实现业务时无需显示的创建工厂或者实例对象。

    其弊端则是当新增一种服务时,工厂类则需要进行改动,相当于影响到已有的代码,不符合开闭原则。

    2、工厂方法模式与抽象工厂模式。

    为什么我要将他们放在一起呢?因为我觉得他们的精髓是一致的-----在于降低模块之间的耦合(注意是模块之间,如果是同一模块则没有多大意义了)

    Uml描述:

    工厂方法

    抽象工厂模式

    然后再看一下模块关系图

    代码略。工厂方法和抽象工厂在用于分层时,层级之间的调用显示出其应用的威力。当然他们的应用更多的是考虑开闭原则(扩展开放而修改关闭---简单工厂的缺陷)程序设计原则,

    综述:

    曾经一直执着于工厂模式是将对象的创建变成了工厂的创建,再由工厂类来创建实际的对象。想了好久都没能理解,很多blog上也是将其实例的发出来,但我却没能理解工厂模式的真谛,谨以此记下自己的理解。

    工厂模式基于对代码的提炼和重构,将对象之间强创建抽象成方法、引用的高度,实现松耦合,及精简了代码,也让代码更加优美。

    Top
    收藏
    关注
    评论
  • 相关阅读:
    20145321《网络对抗技术》逆向与Bof基础
    20145321 《信息安全系统设计基础》课程总结
    20145319 《网络渗透》免考-恶意代码隐藏相关技术
    20145319 《网络渗透》免考—逆向脱壳技术
    20145319 《网络渗透》免考—病毒感染
    20145319 《网络渗透》免考—进程隐藏
    20145319 《网络渗透》免考—远程注入
    20145319 《网络渗透》免考—API拦截技术
    20145319 《网络渗透》免考—任务栏隐藏
    20145319 《计算机病毒》实践三
  • 原文地址:https://www.cnblogs.com/Joy-et/p/4817955.html
Copyright © 2011-2022 走看看