首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基类、扩展类──页面重构中的模块化设计(五)

基类、扩展类──页面重构中的模块化设计(五) 由 Ghostzhang 发表于 2010-06-11 19:24 基类 和 扩展类 是这个系列的主要内容,上一篇《 模块化的核心思想──页面重构中的模块化设计...也就是说,当出现多个类似的模块时,基类包含了这些模块的大部分的效果(或者理解为公共的部分),在基类的基础上,我们可以通过添加很少的代码——扩展类,来达到所需要要效果。...当然前提是这两个模块有能找到类似的点,能够形成基类。 在这两个模块中,我们不难看出,A模块和B模块在信息的部分是很类似的,虽然B模块的列表不需要A模块的评论部分,但这并不影响B模块的表现。...所以我们可以把这两个模块看成的类似模块。另个,以哪个为基类呢?从满足大部分效果这个要求来看,很明显A模块做为基类是要比B模块做为基类更合适的,如果用B模块做基类,那么需要写更多的扩展类来满足A的需要。...效果展示 例子中可以看到,扩展类的定义很少,只是一些简单的定义,像B模块: /* S 消息 扩展 */ .message_nopic{padding-left:0;} /* E 消息 扩展 */ 只需要一句

72850

用 Groovy 解析 JSON 配置文件

应用程序通常包括某种类型的默认或“开箱即用”的状态或配置,以及某种让用户根据自己的需要定制配置的方式。...演示的 JSON 配置文件 在这个演示中,我从 Drupal 中截取了这个 JSON 文件,它是 Drupal CMS 使用的主要配置文件,并将其保存在文件 config.json 中: { "vm"...其中最好的部分是 JsonSlurper 类,它包括几个 parse() 方法,可以将 JSON 转换为 Groovy 的 Map,一种根据键值存储的数据结构。...假设上面的配置是标准的,而用户只想覆盖其中的一点,只想覆盖 vm 结构中的 ip 和 memory 值,并把它放在 userConfig.json 文件中: { "vm": { "ip": "201.201.201.201...眼尖的读者会注意到,我没有检查畸形的 JSON,也没有仔细确保用户的配置是有意义的(不创建新字段,提供合理的值,等等)。所以用这个递归方法来合并两个映射在现实中可能并不那么实用。

3.7K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    用 Groovy 解析 JSON 配置文件

    应用程序通常包括某种类型的默认或“开箱即用”的状态或配置,以及某种让用户根据自己的需要定制配置的方式。...演示的 JSON 配置文件 在这个演示中,我从 Drupal 中截取了这个 JSON 文件,它是 Drupal CMS 使用的主要配置文件,并将其保存在文件 config.json 中: { "vm"...其中最好的部分是 JsonSlurper 类,它包括几个 parse() 方法,可以将 JSON 转换为 Groovy 的 Map,一种根据键值存储的数据结构。...假设上面的配置是标准的,而用户只想覆盖其中的一点,只想覆盖 vm 结构中的 ip 和 memory 值,并把它放在 userConfig.json 文件中: { "vm": { "ip": "201.201.201.201...眼尖的读者会注意到,我没有检查畸形的 JSON,也没有仔细确保用户的配置是有意义的(不创建新字段,提供合理的值,等等)。所以用这个递归方法来合并两个映射在现实中可能并不那么实用。

    4K20

    用 Groovy 解析 JSON 配置文件

    应用程序通常包括某种类型的默认或“开箱即用”的状态或配置,以及某种让用户根据自己的需要定制配置的方式。...演示的 JSON 配置文件 在这个演示中,我从 Drupal 中截取了这个 JSON 文件,它是 Drupal CMS 使用的主要配置文件,并将其保存在文件 config.json 中: { "vm"...其中最好的部分是 JsonSlurper 类,它包括几个 parse() 方法,可以将 JSON 转换为 Groovy 的 Map,一种根据键值存储的数据结构。...假设上面的配置是标准的,而用户只想覆盖其中的一点,只想覆盖 vm 结构中的 ip 和 memory 值,并把它放在 userConfig.json 文件中: { "vm": { "ip": "201.201.201.201...眼尖的读者会注意到,我没有检查畸形的 JSON,也没有仔细确保用户的配置是有意义的(不创建新字段,提供合理的值,等等)。所以用这个递归方法来合并两个映射在现实中可能并不那么实用。

    4.3K20

    Drupal8的详细建站教程

    ”和“zip”两种压缩格式都可以选择,如下图所示: 3)将刚刚下载好的Drupal 8安装包解压,并上传至您网站的主机空间或将其移至您电脑本机存放网页的根目录,本次笔者是在本地搭建,故需把解压后的...Drupal 8移至 根目录,如下图所示: 4)移至完成后,需要在你刚才解压的drupal文件中的sites目录下的default文件中将default.services.yml和default.settings.php...2、安装Drupal 8 1)新增与配置资料库:点击Xampp中MYSQL中的Admin,然后登陆phpMyAdmin(第一次登陆使用者名称为 root,密码为空,然后直接点执行),创建新的数据库,如下所示...也可替换成127.0.0.1,都是本地的意思,如下图笔者的资料夹是命名为 drupal8,所以网址输入是http://localhost/drupal8: ②在语言选项中选择English,或选择简体中文...,当然如果你选择中文,这就需要去官网下载drual语言翻译下载页面,在这里笔者是选择English,当然我的英语水平也很菜,由于后续要示例开发多语言网站,故笔者选的是English;下一步后选择 页面中的

    1.4K50

    2011年最热门的PHP开源项目回顾

    Symfony 2为定义模块提供了一个Bundle API,你可以在应用程序之间进行模块移植。 此外,Symfony 2 有21个独立的组件,每个组件可当作一个独立的库。...你可以用一个简单的Git子模块查看标准Autoloader或依赖注入容器。 2....HipHop 虚拟机 HipHop是Facebook的一个开源项目,这个项目由一个PHP到C++的转换程序、一个重新实现的PHP运行库,以及许多常用PHP扩展的重写版本构成,目的是加速和优化PHP。...Moodle 在我对电子学习领域的研究中,无所不在一个工具就是Moodle(Modular Object-Oriented Dynamic Learning En vironment,模块化面向对象的动态学习环境...这些工具越来越接近OOP(面向对象编程):Joomla有像类集合一样的所有libraries,而Drupal有像类一样的大量测试实例,以及几十个不同的模块,甚至在Drupal8里也有Symfony2组件

    1.7K30

    OB 开发 | ActionDB 扩展 OB GIS 能力:新增 ST_PointN 函数

    城市规划:在城市规划中,能够从复杂的多边形中提取特定点以帮助规划人员做出决策。 导航系统:导航系统中,通过提取路径中的关键点,优化导航指引和路径规划。 2函数功能实现 如何添加注册信息?...模块中匹配的 eval 函数。...增强系统可扩展性 功能扩展:自定义函数为系统增加了新的功能模块,使得 OceanBase 更加多样化和强大,能够支持更广泛的数据操作需求和业务场景。...提升用户体验 功能丰富:用户可以直接在数据库中定制函数, 替代复杂的业务 GIS 操作,而不需要借助外部工具或额外的开发工作,简化了开发流程,提高了用户体验和开发效率。...最终,通过调用自定义的 pointN 函数,实现了在 OceanBase 中 GIS 功能的扩展。

    8210

    DotNet友元程序集解析

    项目开发的过程中,调试使用的可能是最多的操作。任何代码写出来都需要经过调试和整合,以此扩展和提升程序的稳定性和可靠性。...定制Attribute允许定义的信息应用于几乎每一个元数据表记录项,这种可扩展的元数据信息能在运行时查询,从而动态改变代码的执行方式。...CLR允许将定制Attribute应用于可在文件的元数据中表示的几乎所有元素。定制Attribute主要应用于程序集、模块、类型、字段、方法、方法参数、方法返回值、属性、事件、泛型类型参数。...定制Attribute就是一个类的实例,它被序列化成驻留在元数据中的一个字节流,在运行时,可以对元数据中包含的字节进行反序列化,从而构造类的一个实例。...这篇文章希望对大家有所帮助,还是那句话,需者自取,也虚心接受吐槽。知识在于分享,更在于每一个人的思考。

    88870

    直播类业务云化建设

    外网通信加密、加速需求:灰度上云过程中,信令需经外网穿越各机房间,需要进行加密处理,同时要保证通信效率,确保不会影响业务能力,需保障。...而且直播平台云上建设中,突出的风险是灰度过程,所以直播平台需先规划并建设全球跨云运营方案。然后依此方案,解决在灰度过程中的质量控制与调度需求。...4层复合代理 – 流媒体适配层 互动直播录制模块,按上文所说,为进行IP收敛,进行了定制开发,不但适配私有协议,同时扩展支持信令交互,具体基础代理以外的录制策略路由及流调度能力。...b) 数据中转中国香港模块 定制加密通信隧道,提升与广州通信质量,向广州模块提交中国香港数据流信息;同时做为海外其它中转模块的代理,提供数据同步服务。...),数据挖掘(日志与业务数据)、质量响应(多维监控、舆情与告警) 七、 小结 直播类业务云化建设,本质上是一个将自研已有的“复杂巨系统”向全球化扩展的上云之路,各方面团队共同面对,并解决了诸多环境差异与业务适配需求的难点

    3.7K00

    Elasticsearch 轻量级搜索中台实践--Alpha

    业务与搜索引擎之间的耦合 业务代码中需要考虑 ES 索引数据的同步、字段值的变更、数据体量、请求模式跟流量; 引擎侧需要集成业务定制化插件, 定制化script等⾮通⽤配置。...2、中台认知 中台是⼀个抽象概念(可能有些地⽅把它定性为⼀种战略), 个⼈认为如果能折叠搜索链路中的通⽤部分,统⼀管理数据并将业务具象部分以扩展点的⽅式让业务侧协作(e.g 插件, 配置化,脚本,可视化...搜索模块中⼼化管理的有⽆, 搜索中台的覆盖⾯取决于企业搜索相关的业务模式。 3、基础模块 3.1 能力篇 聊聊基于ES的搜索中台模块前先简单梳理⼀下中台折叠的基础能⼒。...业务侧⽆需理解搜索中台底层逻辑, 只需要在可视化界⾯上提供业务数据模型之间的关联关系(单表场景⽆需提供), 即可在Admin应⽤上管理, 监测, 控制异构数据的同步状况。...中台基于业务搭建,将搜索链路中通⽤部分收编, 业务定制化部分以扩展⽅式嵌⼊⾮核⼼流程(插件式、配置化、可视化管理)。

    34710

    Python包

    import dir1,dir2.mod1 例如:要使用如图所示的package1,则py_pkg_mod容器必须要在模块搜索路径中 import package1.mod1 包导入语句的路径内的每个目录内都必须有...则_name_的值为模块名 可以载模块文件检测自己的_name_属性,以之实现运行指定的代码 常用语模块的自我测试 发布Python模块或程序 Python模块、扩展和应用程序可以按以下几种形式进行打包和发布...压缩文件(使用distutils) windows的zip文件和类Unix平台的.tar.gz文件 自动解包或自动安装可执行文件 windows中的exe文件 自包含的,不要求安装的预备运行可执行程序....deb文件 Python eggs 较流行的第三方扩展 1.使用disutils发布模块 distutils模块能够帮助完成模块或程序发布 1“发布”是指一个文件集合,这些文件联合在一起可使用distutils...py_modules:各模块名称组成的列表,此些模块可能位于包的根目录下,也可能位于某子包目录中(subpkg1.modname): packages:各子包名称的列表 大体分为两类:元数据信息和包中的内容列表

    2.4K100

    干货 | 跨多业务线挑战下,携程订单索引服务的1.0到2.0

    在这里我们总结了其中的经验和心得,希望能给大家,尤其是有做跨多业务线或者复杂系统需要升级改造的同学们,一点启发或者是帮助。 一、什么是OI?...3)大量的订单接入方(业务线),和 OI 服务的调用方希望我们接入大量的非标准字段,由于旧系统的各种限制,往往难以支持或者周期漫长 1.0系统并不支持扩展字段的添加,所有的扩展字段添加都需要定制开发(从指定...调度平台,由于调度平台的限制, 每新增一个 Job 都需要开发一个对应的 Job 类,并发布代码,流程长,风险大 若一个实例需要多活,需要在 Job 调度平台中针对每个实例,单独手工配置 Job 调度任务...OI平台化 将订单变更检测和订单详情数据源,以及订单的部分特殊标准信息(如订单状态等)全部作为meta通过统一配置管理平台来进行管理,并且自研了 Job调度模块以支持根据配置的数据源 MetaData...(不过暂时不支持接入方自主录入,需线下提供,审核完毕后,再录入Meta信息)。通过这个改变,将过去接入过程中贯穿始末的业务讨论时长从数周缩短到了一两次会议(电话或者面谈)就能沟通完毕的程度。

    1K20

    Flarum 二次开发项目配置指南

    Flarum 所有的模块,包括核心 flarum/core、所有的扩展(包括官方维护与第三方维护的扩展),均通过依赖管理器 Composer 以第三方模块依赖的形式加载至 vendor 目录中。...引入这个配置文件后,在使用类或函数时,PHP 会自动把需要的依赖加载进来。...网站主体在一个 Git 仓库,所有要修改的子模块,也加入各自单独的仓库,以 submodule 的形式嵌入到网站主体的 Git 仓库中。...远程仓库配置 我们需要有个远程仓库跟踪本地的更改,submodule 也需要远程仓库的 URL,本小节主要介绍远程仓库的配置问题。涉及到定制的每一个模块,都需要在一个独立的仓库下跟踪版本的变化。...与上游同步 在这一系列机制下,我们定制的所有模块,都是在官方的分支提交下所分叉出的新的分支。因此,若上游有新的代码更新,我们只需要在本地同步上游的分支,然后再合并修改,再push 到我们的仓库中。

    3.6K10

    啄幕鸟:iOS开发提效好帮手

    啄幕鸟架构图、啄幕鸟界面截图 啄幕鸟架构 啄幕鸟使用插件化架构,每个工具作为插件接入到啄幕鸟基础服务当中,各个插件相互独立,同时支持外部插件注册、定制等,啄幕鸟还提供了一些通用功能模块,如系统分享面板、...公共模块 啄幕鸟公共模块包括分享面板、图文预览、屏幕折线图、屏幕日志四部分,随着工具开发,越来越多的通用能力会总结到公共模块中。...内的 Debug 工具获取运行时数据,帮助定位问题,啄幕鸟提供了多种查看运行时数据的方式:对象查看、方法监听、po 命令和 JSON 抓包,帮助在 Bug 现场定位问题, In-APP-Debug 工具都利用了...啄幕鸟工具插件截图 五、扩展开发 啄幕鸟使用插件化架构,新插件扩展方便,部分插件也支持功能扩展。...一个类只需实现插件协议方法即可注册为插件,可定制插件分组、分组显示位置、插件名称、icon、插件显示位置等,简单方便,高可定制。

    1.1K30

    云VS本地,一言难尽的ERP

    从本质上看,ERP是一个模块化的软件系统,它将金融、人力资源和客户关系管理等核心业务功能的数据结合起来,帮助组织更有效地运作。...集成 从某种程度上来说,由于在应用程序之间传输数据的需求愈发增多,大多数内部和云ERP软件系统都提供了集成服务与支持。云ERP系统会倾向于使用应用程序编程接口(API),这是一类帮助简化集成的工具。...相比之下,使用多租户云ERP的企业可能就无法实现与之相同的高级定制。 4. 移动接入 我们经常看到传统的ERP产品也会为用户提供移动接入,可以帮助它们进行远程审批、通知和操作。...而尽管云ERP系统的定制成本更低、速度更快,但本地ERP系统更适合那些需要广泛或独特定制的公司。 数据 无论是在本地ERP还是云ERP系统中,企业都可能需要投入相同的资金和时间将数据转移到新系统中。...但是,对于其他很多公司来说,他们给出的答案是继续在目前以及可预见的未来保持现有的本地ERP模式,其最大原因之一就是复杂性,制造类公司均需要非常具体的定制化,而且云ERP产品也不总是如厂商承诺的那样完美。

    1.3K31

    2022爱分析· 银行数字化厂商全景报告

    数库科技能够提供数据治理及分析服务、定制化系统开发服务两类定制化服务。...、算法模型构建等,如通过企业评价模型评估潜在营销企业、通过数据分析以针对不同客群定制金融产品等,可满足银行日渐多样的定制化需求,助力银行基于全面和精准的数据模块和产品组件,快速实现场景拓展,短期内高效完成方案落地...产品具备高开放性和可扩展性。厂商综合办公系统开放性和可扩展性高,基于微服务架构、前后分离、低代码等技术可实现功能模块的扩展和调整,满足银行业务场景变化和升级需求。产品自主可控。...服务方面,厂商需具备丰富的远程视频银行建设经验,能够在帮助银行梳理业务逻辑与业务流程的基础上,助力银行设计远程银行平台功能模块与组件,并根据不同业务场景需求帮助银行定义线上线下渠道接入的优先级等,实现定制化的服务支持...厂商能力要求:厂商需能向银行提供低代码或无代码应用开发平台,帮助业务人员或技术人员快速进行应用搭建,实现业务需求的落地,提升开发效率。具体而言,厂商需具备以下能力:可视化开发能力与扩展能力。

    66020

    重学SpringBoot3-SPI机制

    这种自动配置部分依赖于 Spring Boot 的服务提供者接口(SPI)机制,它允许开发者以模块化和可插拔的方式扩展和定制框架行为。...SPI(Service Provider Interface)即服务提供者接口,是一种服务发现机制,允许开发者和框架发现和加载可用的服务实现,而不需要在代码中硬编码具体的实现。...在 Java 平台上,SPI 通常是通过 java.util.ServiceLoader 类实现的,但 Spring Boot 对这一概念进行了扩展,以支持其自动配置和模块化架构。...文件中定义的各种组件,包括自动配置类。...总结 Spring Boot 的 SPI 机制不仅强化了框架的自动配置能力,还提供了一种灵活且强大的方式来扩展和定制应用程序的行为。

    14710

    SpringBootStarter技术:生产就绪与环境配置、实现自定义Starter

    我们只需要在Maven中引入对应的现成Starter依赖,在代码中添加必要的注解,就可以获得开箱即用的对应功能。...OOP中模块化的关键单元是类。而在AOP中,模块化单元由“切面”组成。通过预编译方式和运行期动态代理实现程序功能的统一维护。...Spring Boot生产就绪与环境配置 Spring Boot自带的spring-boot-actuator模块提供的生产就绪(production-ready)特性与运行状况指标检查功能,可以帮助你深入掌握运行中的...Endpoint分成两类:原生端点和自定义端点。自定义端点主要是指扩展性端点,用户可以根据自己的实际应用,定义一些自己比较关心的指标,在运行期进行监控。...根据条件(ConditionalOnBean),要完成SagProxy的自动化配置 , 我 们 需 要 在 类 路 径 中 判 断 声 明 类 SagProxyMarkerConfiguration.mark.class

    1.1K10

    Creator3D新版本震撼来袭

    在最新的 v1.2 版本中,我们完成了基础的插件机制文档和各个模块的插件接口、消息等,终于可以开放给开发者们,满足大家定制工作流的需求。 新建一个插件非常简单,只需要在扩展菜单中创建即可。...在 v3.0 版本中,我们的插件商店也将迎来升级,同时包含 2.x 和 3.x 版本的插件,也会投注更大的精力在插件生态体系上,帮助开发者通过插件获得收入。...物理模块增强 与动画模块一样,物理模块的功能也在不断的增强之中,v1.2 之中我们基本补全了游戏中需要的刚体碰撞体,并且开始添加各种约束组件的支持,对物理类游戏的支持得到了极大地增强。...Native 平台,方便定制构建流程,输出结果与之前一致 动画编辑器体验优化 动画编辑器是我们一直在持续优化的重要模块,本次 v1.2 又完成了新一轮体验上的优化,具体优化如: 支持节点树面板中节点的搜索与显示过滤...不过建议开发者还是要在代码中搜索所有类似命名方式的使用,并尽快更改为无 Component 后缀的类名。

    1.1K40

    在线教程 | 轻松拿捏莫奈花园、宫崎骏漫画风格,用 ComfyUI InstantID 打造百变写真

    从技术的角度来看,InstantID 避免了对文生图模型 UNet 部分的训练,仅通过训练一个轻量级的可插拔模块,在推理过程中实现了无需 test-time tuning,同时保持了文本控制的灵活性,确保了面部特征的高保真度...同时,InstantID 还支持文本提示编辑,仅需简单的文字指令,便可进行个性化定制。...所以,HyperAI超神经本周上线了「ComfyUI InstantID 工作流在线教程」,基于 ComfyUI 的模块化设计,实现了高度定制化。...同时,ComfyUI 节点式的界面和工作流框架,也非常适合需要频繁修改和扩展的项目。...点击「继续执行」,等待分配资源,首次克隆需等待 3-5 分钟左右的时间。当状态变为「运行中」后,点击「打开工作空间」。

    26010
    领券