flex布局水平垂直 垂直_垂直和水平装饰

flex布局水平垂直 垂直

装饰器模式是在不更改其接口的情况下向对象添加功能的最佳方法之一。 我经常使用可组合装饰器,并且总是会问自己在功能列表必须可配置时如何正确设计它们。 我不确定我的答案是否正确,但是这里有一些值得深思的地方。

The Apartment(1960),比利·怀尔德(Billy Wilder)

The Apartment(1960),比利·怀尔德(Billy Wilder)

假设我有一个数字列表:

interface Numbers {Iterable<Integer> iterate();
}

现在,我想创建一个仅包含奇数,唯一,正数和排序数的列表。 第一种方法是垂直的 (我刚刚将其命名):

Numbers numbers = new Sorted(new Unique(new Odds(new Positive(new ArrayNumbers(new Integer[] {-1, 78, 4, -34, 98, 4,}))))
);

第二种方法是水平的 (同样,我做了一个名字):

Numbers numbers = new Modified(new ArrayNumbers(new Integer[] {-1, 78, 4, -34, 98, 4,}),new Diff[] {new Positive(),new Odds(),new Unique(),new Sorted(),}
);

看到不同? 第一种方法“垂直”修饰ArrayNumbers ,通过可组合修饰符PositiveOddsUniqueSorted添加功能。

第二种方法引入了新的接口Diff ,该接口通过PositiveOddsUniqueSorted实例实现了迭代数字的核心功能:

interface Diff {Iterable<Integer> apply(Iterable<Integer> origin);
}

对于numbers用户,这两种方法是相同的。 区别仅在于设计。 哪个更好?何时? 似乎垂直装饰更易于实现,并且更适合于只暴露一些方法的较小对象。

根据我的经验,我总是倾向于从垂直装饰开始,因为它易于实现,但随着装饰器数量的增加最终会迁移到水平装饰。

翻译自: https://www.javacodegeeks.com/2015/10/vertical-and-horizontal-decorating.html

flex布局水平垂直 垂直

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂 | Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删栈是什么&#xff1f;栈有什么作用&#xff1f;首先&#xff0c;栈 (stack) 是一种串列形式的数据结构。这种数据结构的特点是后入先出 (LIFO, L…

thinkphp6企业项目实战_[MarsZ]ThinkPHP项目实战总结

本文原word格式百度云盘下载地址&#xff1a;综述 2需求 2作者 2系统一览 2Unity3d客户端 2PHP后台 4准备 6XAMPP 6官网 6下载地址 6教程 6ThinkPHP 6官网 7项目所用版本 7下载地址 7快速入门 7完全手册 7步骤 7准备ThinkPHP 7修改MySQL设置信息 8检测是否成功 9扩展&#xff1…

java包装模式_在Java8中包装设计模式

java包装模式GOF书中没有列出环绕模式&#xff0c;但对于以下问题非常有用&#xff1a; 循环构造&#xff0c;例如执行while / while / for循环 秒表周围的一些代码。 用运行时异常包装检查的异常 初始化和清理&#xff0c;例如创建/销毁线程池或打开/关闭文件等 将上下文…

c得到当前时分秒 linux_Linuxc - Linux系统下的时间知识点

Unix/Linux系统下的时间知识点一、Unix/Linux系统的几种时间结构&#xff1a;1、time_t 类型&#xff1a;长整型&#xff0c;一般用来表示从1970-01-01 00:00:00时以来的秒数&#xff0c;精确度&#xff1a;秒&#xff1b;由函数time()获取&#xff1b;该类型定义在头文件 /usr…

【C语言】彻底搞懂内存屏障与volatile

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删最有价值的写在最前面内存屏障与 volatile 是高并发编程中比较常用的两个技术&#xff0c;无锁队列的时候就会用到这两项技术。然而这两项技术涉…

javafx 使用_何时使用JavaFX代替HTML

javafx 使用像我这样的JavaFX爱好者反复面对的一个问题是何时&#xff08;或为什么&#xff09;使用JavaFX代替HTML&#xff08;5&#xff09;。 这是我的两分钱&#xff1a; 如果…&#xff0c;则应使用JavaFX。 …您对坚固性/质量感兴趣。 JavaFX是Java&#xff01; 您将能…

charles代理手机调试_H5开发 移动端 调试之 Charles 抓包 和 Map Remote

移动端调试是每一位前端工程师必须掌握的技能&#xff0c;在移动端环境上往往有很多不同的情况&#xff0c;我们需要借助一些工具来调试。本文将介绍 Mac 如何安装 charles&#xff0c;进行抓包、以及一些应用场景。场景一&#xff1a;app端内线上环境接口报错&#xff0c;想看…

lucene 查询示例_Lucene查询(搜索)语法示例

lucene 查询示例本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中&#xff0c;您将了解Lucene。 您将了解为什么这样的库很重要&#xff0c;然后了解Lucene中搜索的工作方式。 此外&#xff0c;您将学习如何将Lucene Search集成到您自己的应用程序中…

熟悉又陌生的arm 编译器详解(armcc/armclang)

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删arm编译器学习首先来了解一下编译器&#xff0c;其通常分为三个部分&#xff1a;前端优化器后端。前端&#xff1a;词法、语法和语义分析&#x…

js怎么获取一个元素与屏幕右边的距离_js如何获取div(ul li)离屏幕上下左右边距离(长度)...

在网页中移到元素div(或 ul li)&#xff0c;常常需要获取元素div离屏幕上下左右的距离&#xff0c;这样可以知道元素处在屏幕中的位置&#xff0c;以控制元素的移动。获取元素div的长度或高度&#xff0c;可以用 js 获取元素div的width或height属性得到&#xff0c;但元素没有距…

图文详解STM32单片机远程升级

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删1、需要两份程序BootLoader和App程序&#xff0c;两份程序均可以通过jlink下载&#xff0c;只需要将下载地址修改一下即可&#xff1a;2、在Boot…

建立索引lucene_用Lucene建立搜索索引

建立索引lucene本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中&#xff0c;您将了解Lucene。 您将了解为什么这样的库很重要&#xff0c;然后了解Lucene中搜索的工作方式。 此外&#xff0c;您将学习如何将Lucene Search集成到您自己的应用程序中…

hadoop 卡主_HDFS DisTCP执行卡住了,怎么办?

背景我们在进行两个集群间数据同步的时候,使用的是hdfs的distcp的方式进行跨集群跨版本的数据同步,但是在执行hdfs distcp 命令时,发现在运行到 with build listing处就卡住了 .具体问题如下图:针对问题解决,中间我们试过了哪些办法1 首先查看hdfs本身服务状态是否正常,get命令…

spring javafx_Oracle Spring Clean JavaFX应该吗?

spring javafx我们确实在Codename One上依赖JavaFX&#xff0c;我们的模拟器需要它。 我们的桌面版本使用它&#xff0c;而我们的设计器工具基于Swing。 我们希望它成功&#xff0c;这对我们的业务至关重要&#xff01; 即使您是Java EE开发人员并且不关心桌面编程&#xff0c;…

哪些著名软件是用C、C++编写的?

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删经常跟大家谈论C/C是多么的厉害&#xff0c;但总是耳听为虚&#xff0c;还需眼见为实&#xff0c;那如何做到眼见为实呢&#xff1f;当然还是要从…

tomcat截取日志_Tomcat的日志分割三种方法

一、Tomcat的日志分割三种方法一、方法一&#xff1a;用cronolog分割tomcat的catalina.out文件1、编译安装cronologwget http://cronolog.org/download/cronolog-1.6.2.tar.gztar zxvf cronolog-1.6.2.tar.gzcd cronolog-1.6.2./configuremake && make install2、查看c…

java ee 下版本_将旧版本从Java EE 5减少到7

java ee 下版本Java EE 5于2005年首次引入&#xff0c;而Java EE 7于2013年问世。这两个版本之间存在7年的差距&#xff0c;从技术角度来说&#xff0c;这就像一个世纪。 许多组织仍然对使用Java EE 5感到困惑&#xff0c;并且有很多正当的理由选择不升级。 不过&#xff0c;如…

哪款 Linux 才是更好的 CentOS 替代品?

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删AlmaLinux 是基于 RHEL 的企业级 Linux 发行版。以下是选择 AlmaLinux 作为 CentOS 替代方案的一些原因。CentOS 将于 2024 年 6 月到期。截至 2…

android uinput 按键_android 使用uinput模拟输入设备的方法

在google remote中&#xff0c;android接收端接收socket发来的IR CODE&#xff0c;然后将IR CODE模拟出来发给系统处理&#xff0c;这就是google remote接收端的原理。系统端怎样模拟input event呢&#xff1f;方法一&#xff1a;通过Instrumentation.sendKeyDownUpSync 实现&a…

绩效从C到S,分享渣渣程序员逆袭秘诀!

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删绩效面谈结束&#xff0c;从会议室出来&#xff0c;有一种不真实的感觉——这个季度我竟然拿了S&#xff1f;&#xff01;要知道&#xff0c;上个…