
设计模式
文章平均质量分 92
打磨时光
我是打磨匠,关注软件开发,打磨产品,服务人类。
展开
-
重构实战之优化 id 生成器
如何发现代码质量问题?常规检查:目录设置是否合理、模块划分是否清晰、代码结构是否满足“高内聚、松耦合”?是否遵循经典的设计原则和设计思想(SOLID、DRY、KISS、YAGNI、LOD 等)?设计模式是否应用得当?是否有过度设计?代码是否容易扩展?如果要添加新功能,是否容易实现?代码是否可以复用?是否可以复用已有的项目代码或类库?是否有重复造轮子?代码是否容易测试?单元测试是否全面覆盖了各种正常和异常的情况?代码是否易读?是否符合编码规范(比如命名和注释是否恰当、代码风格是否一致等)?原创 2020-08-30 19:02:03 · 229 阅读 · 0 评论 -
改善代码质量的20条编程规范
命名1. 命名多长合适命名的一个原则就是以能准确达意为目标2. 利用上下文简化命名public class User { private String userName; private String userPassword; private String userAvatarUrl; //...}在 User 类这样一个上下文中,我们没有在成员变量的命名中重复添加“user”这样一个前缀单词,而是直接命名为 name、password、avatarUrl。在使用这些属性时候原创 2020-08-30 17:49:44 · 682 阅读 · 0 评论 -
设计原则与思想: SOLID 原则
经典的设计原则,其中包括,SOLID、KISS、YAGNI、DRY、LOD 等单一职责原则(SRP, Single Responsibility Principle)SOLID 原则中的第一个原则:单一职责原则。单一职责原则的定义描述非常简单,也不难理解。一个类只负责完成一个职责或者功能。也就是说,不要设计大而全的类,要设计粒度小、功能单一的类。换个角度来讲就是,一个类包含了两个或者两个以上业务不相干的功能,那我们就说它职责不够单一,应该将它拆分成多个功能更加单一、粒度更细的类。类中的代码行数、函原创 2020-08-16 23:00:53 · 521 阅读 · 0 评论 -
编程范式:面向对象编程、面向过程编程和面向函数编程
什么是面向过程编程与面向过程编程语言?面向对象编程相比面向过程编程有哪些优势?为什么说面向对象编程语言比面向过程编程语言更高级?有哪些看似是面向对象实际是面向过程风格的代码?在面向对象编程中,为什么容易写出面向过程风格的代码?面向过程编程和面向过程编程语言就真的无用武之地了吗?概念面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地.原创 2020-08-01 22:05:01 · 989 阅读 · 0 评论 -
面向对象的四大特性:封装、抽象、继承、多态
封装封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。它需要编程语言提供权限访问控制语法来支持,例如 Java 中的 private、protected、public 关键字。封装特性存在的意义,一方面是保护数据不被随意修改,提高代码的可维护性;另一方面是仅暴露有限的必要接口,提高类的易用性。例如钱包:public class Wallet { private String id; private long createTime原创 2020-08-01 17:27:32 · 1155 阅读 · 0 评论 -
23 种设计模式
原创 2019-11-23 17:51:14 · 82 阅读 · 0 评论 -
设计模式之装饰器模式
装饰器模式职责动态的为一个对象增加新的功能装饰模式是一种用于代替继承的技术。无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。实现细节Component抽象构建组件真实对象和装饰对象有相同的接口。这样,客户端对象就能够以与真实对象相同的方式同装饰对象交互。ConcreteComponent 具体构建组件...原创 2019-11-23 17:47:52 · 100 阅读 · 0 评论 -
设计模式之策略模式
策略模式对应解决某个问题的一个算法族,允许用户从算法族中任意选一个算法解决某一问题,方便更改和添加新的算法。本质:分离算法,选择实现开发中常见的场景:JavaSe 中 GUI 编程,布局管理Spring 框架中, Resource 接口,资源访问策略javax.servlet.http.HttpServlet#service()实际应用:在字段校验的时候,使用了...原创 2019-11-23 17:21:13 · 219 阅读 · 0 评论 -
设计模式之装饰器模式
装饰器模式Java 的 IO 中就使用了装饰器模式进行设计。职责动态的为一个对象增加新的功能装饰模式是一种用于代替继承的技术。无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。实现细节装饰者和被装饰者拥有相同的接口。角色作用组件接口是装饰者和被装饰者的父类或者是接口。定义了被装饰者的核心功...原创 2019-10-27 18:40:47 · 474 阅读 · 0 评论 -
设计模式之享元模式
享元模式场景内存属于稀缺资源,不要随便浪费。如果有很多相同的对象,可以通过享元模式,节省内存。核心以共享的方式高效的支持大量细粒度对象的重用。共享的关键是区分了外部状态和内部状态外部状态:不可以共享,会随着环境变化而变化内部状态:可以共享,不会随着环境变化而变化享元模式实现FlyWeightFactory 享元模式工厂类创建管理享元模式对象,一般设计成键值...原创 2019-10-27 17:26:23 · 96 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式功能: 实现创建者和调用者的分离分类简单工厂模式工厂方法模式抽象工厂模式面向对象设计基本原则OCP 开闭原则 : 对扩展开放,对修改关闭DIP 依赖倒转原则 : 针对接口编程,不要针对实现编程LoD 迪米特法则 :与直接朋友通信,避免与陌生人通信核心本质实例化对象,用工厂方法代替new操作将选择实现类、创建对象统一管理和空值。...原创 2019-09-23 22:46:57 · 121 阅读 · 0 评论 -
设计模式之单例模式
单例模式核心:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点常用场景:1. windows 系统 任务管理器、回收站2. 网站计数器3. 配置文件4. 操作系统的文件系统5. spring 中的 bean 默认是单例...优点:减少系统开销常见的五种单例模式主要饿汉式(线程安全、调用效率高。但是,不能延时加载)懒汉式(线程安全、调用效...原创 2019-09-22 00:01:00 · 105 阅读 · 0 评论