flex布局水平垂直 垂直

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

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布局水平垂直 垂直

flex布局水平垂直 垂直_垂直和水平装饰相关推荐

  1. html flex 兼容ie9,flex布局及其兼容解决方案_蓝戒的博客

    导语: 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现.2009年,W3C提出了一种 ...

  2. mysql 垂直投影_垂直css文字

    css垂直居中怎么设置?文字上下居中和图片垂直居中 css 居中分css垂直居中和css水平居中,水平居中平时比较常用,这里我们主要讲css上下居中的问题.垂直居中又分为css文字上下居中和css图片 ...

  3. Sharding-Sphere,Sharding-JDBC_分库分表(垂直分库_垂直分表)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记003

    首先我们看看分库分表有几种方式: 然后我们看, 有垂直分库,垂直分表 有水平分库,水平分表. 之前我们做mycat的时候,说过有垂直分库,水平分表, 垂直分表的情况好像是没有说. 要说垂直分表,我们先 ...

  4. CSS(二)——Flex布局 边框 渐变 过渡 动画

    学习CSS第二周的总结 一. Flex布局 容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis).主轴的开始位置(与边框的交叉点)叫做main start,结束位 ...

  5. 微信小程序之 flex 布局最详细讲解 !!!

    小程序 flex 布局快速入门 小程序 flex 布局实现 一.view 默认布局 1.1 flex 布局原理 1.2 flex 父项常见属性 二.使用 flex 设置水平弹性布局 2.1 Flex ...

  6. mysql数据库水平分割_数据库的水平分割和垂直分割

    在数据库操作中,我们常常会听说这两个词语:水平分割和垂直分割.那么到底什么是数据库的水平分割,什么是数据库的垂直分割呢?本文我们就来介绍一下这部分内容. 1.水平分割: 按记录进分分割,不同的记录可以 ...

  7. Mysql 分表 垂直分割_图文解释 读写分离、垂直拆分、水平拆分、分库分表

    1. 前言 相信你经常被 读写分离.垂直拆分.水平拆分.分库分表 这几个名词搞得很懵逼.我有时候也很懵逼,那么今天就来把这几个数据库常用术语搞清楚,同时也记录一下. 2. 读写分离 这个相对比较好理解 ...

  8. 【约束布局】ConstraintLayout 约束布局 ( 简介 | 引入依赖 | 基本操作 | 垂直定位约束 | 角度定位约束 | 基线约束 )

    文章目录 一. ConstraintLayout 简介 1. 引入 约束 布局 ( 1 ) 约束性布局 作用 和 简介 2. 约束 简介 ( 1 ) 约束个数要求 ( 2 ) 约束设置 与 显示位置 ...

  9. 数据切分 垂直切分、垂直拆分与水平拆分的优缺点

    数据切分 垂直切分 关于数据库的水平切分和垂直切分的一些概念垂直拆分垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的.当一个网站还在 ...

最新文章

  1. mysql的查表语句_mysql查表语句_MySQL
  2. 共聚焦图片怎么加标尺_聚焦扶贫政策,打造小康生活
  3. python期末项目书怎么写_自己写了一部书怎么出版
  4. Java类class getClasses()方法及示例
  5. 职称计算机提前考试试卷,职称计算机考试多项选择考试卷模拟考^试题
  6. springframework: Transactional注解和@EnableTransactionManagement
  7. 20200916:leetcode34周双周赛题解
  8. Java read failed_android-获取java.io.IOException:读取失败,套接...
  9. 量子计算机解ns方程,量子计算机可解方程组
  10. java计算机毕业设计进出货管理系统MyBatis+系统+LW文档+源码+调试部署
  11. w10如何共享计算机硬盘,Win10如何设置局域网磁盘共享?操作方法分享
  12. 生鲜行业数字化采购管理系统:助力生鲜企业解决采购难题,全程线上化采购执行
  13. DirectSound学习(二)--流式缓冲区
  14. pmv计算c语言软件,Fluent 软件
  15. Python环境搭建之OpenCV
  16. 微信摇一摇插件ios_iOS-仿微信摇一摇
  17. 蓝桥杯单片机比赛学习:6、中断系统之定时器中断的基本原理
  18. 谷歌浏览器手势操作_[经验分享] 2步操作永久提升谷歌Chrome浏览器默认下载速度...
  19. Matlab高光谱遥感数据处理与混合像元分解
  20. 蚂蚁、小鸟、大象 引发的面向对象问题

热门文章

  1. ssl1257-产生数【图论,最短路】
  2. 【贪心】Radar Installation(poj 1328)
  3. 【桶排】小 X 的密码破译
  4. MySQL now()函数
  5. SpringMVC @Transactional的陷井大坑引发No Session found for current thread
  6. 一百馒头一百僧,大僧三个更无争,小僧三人分一个大小和尚得几丁?
  7. 公众号新上线微信小游戏(疯狂猜图)
  8. java实现动态验证码源代码——jsp页面
  9. struts+hibernate+oracle+easyui实现lazyout组件的简单案例——工具类
  10. pycharm 的version controller