适配器模式 Adapter Pattern
2020-03-04
假设现有一个旧接口,客户端希望使用一种新接口的形式调用它,此时可以利用适配器模式,将旧接口以新接口的形式进行封装。不过如果适配器使用过多,则…
生成器模式 Builder Pattern
2020-01-29
在设计类时,如果包含或将来可能会包含很多属性,就要重载很多构造方法,不仅设计参数麻烦,调用也比较混乱。 为此可以使用 getter、setter…
策略模式 Strategy Pattern
2020-01-27
在软件开发中,某一功能可以有多种实现,如果把这些实现都放在一个类中,则不利于增加、修改和替换,此时可以把可能频繁变化的逻辑抽象出来,Runn…
Java 集合框架
2019-04-17
Collection Collection 接口基本可分为三种,List、Set 和 Queue。这些接口有对应实现的抽象类,实体类只需要继承抽象类即可,免去不必要的重复编码。 为什么实…
在 Java 中使用 Map 计数的几种姿势
2018-06-02
一个老生常谈的问题:在 Java 中,如何使用 Map 给对象计数,例如统计字符串出现的次数? 姿势一:containsKey() Map<String, Integer> map = new HashMap<>(); for (String word : words) { if (map.containsKey(word)) map.put(word,…
工厂模式 Factory Pattern
2017-09-09
工厂模式可分为简单工厂模式 Simple Factory Pattern、工厂方法模式 Factory Method Pattern 和 抽象工厂模式 Abstract Factory Pattern。 简单工厂模式 简单工厂模式实际上是对产品创建…
在 Android Java 核心库 libcore 中打印 Log
2017-08-30
Android Java 核心库中是无法直接使用 android.util.Log 的,添加后编译不通过,因为 framework 中的 Java API 依赖于 Java 核心库。 在 Android 7.0 之前,Java 核心库源码在libcore/luni/下…
装饰器模式 Decorator Pattern
2017-06-22
在面向对象编程中,要扩展一个类或对象的功能,可以使用继承机制。 举例来说,咖啡店可能会提供拿铁、卡布奇诺、美式咖啡、意式浓缩等供客人选择,我们…