策略设计模式 本文转载自屈定’s Blog 策略模式是一种简单的设计模式,但是其在业务开发中是一种非常有用的设计模式.举个例子,当你的业务需要针对不同的场景(可以简单理解为枚举类),执行不同的策略时那么使用策略模式可以帮助你更好的写出低耦合与高可扩展的代码. 标准策略模式策略模式: 把具体的算法从业务逻辑中分离出来,使得业务类不必膨胀,并且业务与具体算法分离,便于扩展新算法.类图如下:使用策略模式往往策略上有着相似的输入参数以及输出结果,或者有一个公共的上下文,便于抽象出策略接口Str...
设计模式 - 适配器模式
设计模式–适配器模式的思考 本文转载自屈定’s Blog 个人认为适配器模式是一种加中间层来解决问题的思想,为的是减少开发工作量,提高代码复用率.另外在对于第三方的服务中使用适配器层则可以很好的把自己系统与第三方依赖解耦,降低依赖. 什么是适配器模式适配器模式: 将一个类的接口转换为客户所期望的另一个接口.适配器让原本接口不兼容的类可以合作无间.类图如下: Client: 调用方Target: 需要提供的新功能AdaptedObject: 系统中原本存在的类似本次需要提供的新功能的类A...
你写的代码,是别人的噩梦吗
你写的代码,是别人的噩梦吗 本文转自屈定’s Blog Frank,是来自阿里国际技术事业部的高级技术专家,从业十年,也是一位英语说到飞起的型男。今天他将与大家聊聊关于企业应用架构实践的话题。 从业这么多年,接触过银行的应用,Apple的应用,eBay的应用和现在阿里的应用,虽然分属于不同的公司,使用了不同的架构,但有一个共同点就是都很复杂。导致复杂性的原因有很多,如果从架构的层面看,主要有两点,一个是架构设计过于复杂,层次太多能把人绕晕。另一个是根本就没架构,ServiceImpl作...
设计模式 - 组合模式
设计模式–组合模式的思考 本文转载自屈定’s Blog 组合模式是一种抽象树形结构的模式,其在业务开发中也是一种很有用的设计模式,下面开始分析. 组合模式业务中有很多树形结构的表示,比如下面的目录结构 1234567-- 男装 -- 上衣 -- 品牌1 -- 品牌2 -- 裤子 -- 品牌1 -- 品牌3 针对男装可以认为其是树的根节点,上衣,裤子这种下面还可以有节点的称为树枝节点,品牌这种下面不再有分支的称为叶...
设计模式 - 观察者模式
设计模式 - 观察者模式 本文转载自屈定’s Blog 观察者模式观察者模式描述的是一种一对多的关系,这里的一可能是某个状态发生变化,也可能是某一个事件产生.举个例子,针对订单付款,这一事件产生后可能需要经过很多个处理步骤,比如积分,入库,消费排行榜之类的操作,这些操作之间并没有任何关联性甚至可以并行处理,那么就可以理解为订单付款与处理步骤之间的一对多关系.还有一个特点就是单向依赖,处理步骤对于订单付款是单向依赖的,比如有订单付款,才能有处理步骤.但是反之就不依赖,订单付款对于有没有处...
Java 新特性之 Stream
Stream使用这个方法创建一个 Stream 对象。 1new ArrayList<>().stream() Filter过滤器,里面传递一个函数,这个函数的返回结果如果为 true 则保留这个元素,否则的话丢弃这个元素。 1234stringCollection .stream() .filter((s) -> s.startsWith("a")) .forEach(System.out::println...
Java 新特性之 Time
日期类 LocalDate能够简单的获取当天的日期,并且可以方便的对日期进行加减。 他是通过静态方法或者 from/of 等方法创建对象的。 这个类不存储时区,所以他没有时区的概念,如果需要时区的话需要使用 ZonedDateTime 这个类只能进行日期的相关操作,没有具体的时间。 下面介绍常用的几个方法 atTime生成一个带有时间的日期,返回结果是 LocalDateTime 所以很明显这个就是带有时间的日期类。 12LocalDateTime time = LocalDate.now...