Wudashan Blog

Java开发工程师

《代码整洁之道》 读书笔记

细节之中自有天地,整洁成就卓越代码

保持代码整洁,保证用例覆盖,你会感谢我的。 本书结构 本书主要分为三个部分。第一部分1~10章分别从概念、命名、函数、注释、格式、对象与数据结构、错误处理、边界、单元测试、类的角度讲解如何保持代码整洁;第二部分11~13章从系统层面讲解如何保持代码整洁;第三部分14~17章则是从实战的角度对之前所学内容进行演练。 我在看这本书的时候,着重阅读了第一部分和第二部分。第三部分实战演练...

Adapter Pattern 适配器模式

想使用的类的接口不符合你的需求,那就尝试写个适配器吧!

将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 模式名和分类 适配器模式,属于结构型模式。 动机 在软件开发过程中,有时为了更聚焦核心业务功能,我们会依赖一些开源组件来实现一些通用的、基础的功能。一般情况下,直接调用开源组件包中的类的接口来访问它所提供的服务即可。但是,有时会发现它所提供的接口不是我们所期望的,具体表现在方法名不符合我们的...

Factory Method Pattern 工厂方法模式

方法级别的创建对象。

定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到子类。 模式名和分类 工厂方法模式,属于创建型模式。 动机 考虑一个这样的场景:你编写了一个Application类,这个类可以负责创建组件,并且提供了对组件操作的方法。具体代码如下: /** * 应用类 */ public class Application { //...

Abstract Factory Pattern 抽象工厂模式

将创建对象的职责交给工厂去办就好。

提供了一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。 模式名和分类 抽象工厂模式,属于创建型模式。 动机 工厂,维基百科的解释是:一所用以生产货物的大型工业楼宇。在软件工程里,我们也需要生产货物(创建对象)。 不知道大家是否有注意到,在所有热门的阅读类、资讯类的APP里,基本都有一个功能,那就是夜间模式——将所有控件的背景色设置为黑色,而控件里的内容则保持...

Strategy Pattern 策略模式

将算法封装起来,使它们可以相互替换。

定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 模式名和分类 策略模式,属于行为模式。 动机 不知道大家在做功能开发的时候有没有遇到下面类似的这种情况:用户网上支付的选择可以有三种,支付宝、微信、网银。 具体的方法实现可能如下: public boolean pay(Pay payment, int money) { ...

Command Pattern 命令模式

将命令封装成对象,体会面向对象的好处。

将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 模式名和分类 命令模式,属于行为模式。 动机 现在我们手机App经常会有一个菜单栏,点击菜单栏里的每个选项会执行相应的功能,如下图: 但是如果我们对每个选项进行硬编码,那么下次App想换功能的时候,又需要删除旧代码,换成新代码。 就比如说咱们想把上图“收付款”改为“摇一摇...

Singleton Pattern 单例模式

你真的用对了单例模式吗?

确保一个类只有一个实例,并提供一个全局访问点。 模式名和分类 单例模式,属于创建型模式。 动机 那么什么情况下,我们会使用到单例模式?咱们可以看jdk源码,java.lang.Runtime类就是一个典型的例子: public class Runtime { private static Runtime currentRuntime = new Runtime(); ...

Design Patterns 浅谈设计模式

像艺术一样,设计代码,体会编程之美。

先考虑最简单的实现,再斟酌使用设计模式。 前提 想想踏入职场已经超过半年的时间了,现在一个需求分配下来基本都能实现,但是却越发觉得自己写的代码非常的丑,简直与我这种颜值担当的靓仔不匹配。于是我潜心阅读了《Head First 设计模式(中文版)》和《设计模式·可复用面向对象软件的基础》这两本书,可以说收获颇丰,这里对我这一个多月的学习进行一个总结。 《Head First 设...