zoukankan      html  css  js  c++  java
  • 应用FluenceInterface设计让使用者更方便

    image

    --《设计模式_基于C#的工程化实现及扩展》

    相信有用过jquery的朋友,会清楚Jquery在使用上经常是$().fun1(…).fun2(…)这种样式的。Fluent Interface就是用来实现这种调用方式的。

    一个简单的FluentInterface类设计

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace testFluentInterface
    {
        class FluentInterfaceClass
        {
            public FluentInterfaceClass SaySome(string sth) {   //应用Fluence Interface设计
                Console.WriteLine(sth);
                return this;            //返回对象本身
            }
            public FluentInterfaceClass SaySome2(string sth)  //普通的设计方式
            {
                Console.WriteLine(sth);
            }
        }
    }

    测试类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace testFluentInterface
    {
        class Program
        {
            static void Main(string[] args)
            {
                FluentInterfaceClass fic = new FluentInterfaceClass();
                fic.SaySome("1").SaySome("2").SaySome("3");//连贯的调用
                Console.WriteLine("===============================================================");
                fic.SaySome2("1");              //调用1次
                fic.SaySome2("2");              //调用2次
                fic.SaySome2("3");              //调用3次
            }
        }
    }

    从测试类中,我们可以发现FluentInterfaceClass中方法调用方式也非常简单,一直点下去就行。而普通的设计中,我们则需要通过写多次实体来调用实体的方法。

    运行结果截图

    image

    实现的原理

          相信大家都看清楚了吧?使用连贯接口(Fluence Interface)的设计其实就是在方法的最后返回类实体本身(this)。

  • 相关阅读:
    Docker 部署 Nginx
    Docker 安装 Redis
    linux shell "2>&1"
    定时备份docker mysql
    SpringBoot 中拦截器和过滤器的使用
    SpringBoot WebMvcConfigurer
    springboot自定义参数解析HandlerMethodArgumentResolver
    mysql在linux下查看my.cnf位置的方法
    Linux下设置mysql允许远程连接
    Android项目实战(六十):修改项目包名
  • 原文地址:https://www.cnblogs.com/kissazi2/p/3036604.html
Copyright © 2011-2022 走看看