代码重构与设计
文章平均质量分 71
重构与设计模式
拾牙慧者
会点c++、python;
展开
-
API设计笔记:抽象基类、工厂方法、扩展工厂
抽象基类、工厂方法、扩展工厂原创 2022-08-25 23:02:22 · 318 阅读 · 0 评论 -
API设计笔记:pimpl技巧
pointer to implementation:指向实现的指针,使用该技巧可以避免在头文件暴露私有细节,可以促进API接口和实现保持完全分离。原创 2022-07-30 21:32:18 · 390 阅读 · 0 评论 -
重构——解决过长参数列表(long parameter list)
目录1、Replace Param with Query2、Preserve Whole Object3、Introduce Param Object4、Remove Flag Argument5、Combine Functions into ClassReference当我们需要在超长函数中提炼子函数时,如果函数内有大量的参数和临时变量,这将会对函数的提炼形成很大阻碍,你可能会形成过长参数列表,当然你也可以使用全局变量,显然上面两种都不是很好的办法。函数参数列表应该总结出函数的可变性,标志出函数可.原创 2021-09-09 15:57:23 · 1692 阅读 · 0 评论 -
观察者模式Java实现
观察者模式就是当⼀个⾏为发⽣时传递信息给另外⼀个⽤户接收做出相应的处理,两者之间没有直接的耦合关联。观察者模式分为三大块:事件监听、事件处理、具体业务流程例子解析模拟摇号:代码结构:开发中会把主线流程开发完成后,再使⽤通知的⽅式处理辅助流程。他们可以是异步的,在MQ以及定时任务的处理下,保证最终⼀致性。事件监听接口定义:public interface EventListener { void doEvent(LotteryResult result);}接口定义基本的事件类原创 2021-09-15 13:50:35 · 836 阅读 · 0 评论 -
单例模式的七种实现方法(java版)
代码参考:《重学Java设计模式·小傅哥》目录1、静态类使用2、懒汉模式(线程不安全)3、懒汉模式(线程安全)4、饿汉模式(线程安全)5、使用类的内部类(线程安全)6、双重锁检验(线程安全)7、CAS[AtomicReference](线程安全)8、枚举单例(线程安全)在单例模式的实现上,可以考虑以下几点:1、是否支持懒汉模式2、是否线程安全1、静态类使用public class Singleton_00 { public static Map<String, String>原创 2021-09-14 16:41:26 · 383 阅读 · 0 评论 -
《设计模式整理》
常见设计模式如何保证单例模式只有一个实例1、将该类的构造方法定义为私有方法,这样其他处的代码无法通过调用构造函数来实例化该类的对象,只有通过类提供的静态方法来得到该类的唯一实例。2、在该类内部提供一个静态方法,当调用这个方法时,如果类持有的引用不为空,就返回这个引用。如果类的引用为空,就创建这个类的实例。C++的实现有两种,一种通过局部静态变量,利用其只初始化一次的特点,返回对象。另外一种,则是定义全局的指针,getInstance判断该指针是否为空,为空时才实例化对象。单例模式中的懒汉与饿汉模式原创 2021-03-11 19:20:37 · 218 阅读 · 0 评论 -
【设计模式之美】<Reading Notes>贫血模型与充血模型
小知识需要了解的一些名词1、领域驱动设计(Domain Driven Design,简称 DDD)2、MVC 三层架构 : M 表示 Model,V 表示 View,C 表示 Controller。它将整个项目分为三层:展示层、逻辑层、数据层。现在很多项目前后端分离,后端负责暴露接口给前端调用。将后端项目分为 Repository 层、Service 层、Controller 层。其中,Repository 层负责数据访问,Service 层负责业务逻辑,Controller 层负责暴露接口原创 2021-02-03 19:08:43 · 241 阅读 · 0 评论 -
【设计模式之美】<Reading Notes>继承与组合
继承缺点继承是面向对象的四大特性之一,用来表示类之间的 is-a 关系,可以解决代码复用的问题。虽然继承有诸多作用,但继承层次过深、过复杂,也会影响到代码的可维护性。在这种情况下,我们应该尽量少用,甚至不用继承.使用组合替换继承继承主要有三个作用:表示 is-a 关系,支持多态特性,代码复用。而这三个作用都可以通过组合、接口、委托三个技术手段来达成。设计一个关于鸟的类,使用组合、接口、委托完成定义为一个抽象类 AbstractBird,麻雀、鸽子、乌鸦等,都继承这个抽象类。由于不是所有鸟都会飞,所原创 2021-02-03 16:35:27 · 186 阅读 · 0 评论 -
【设计模式之美】<Reading Notes>抽象类与接口
抽象类特性1、抽象类不允许被实例化,只能被继承。2、抽象类可以包含属性和方法。方法既可以包含代码实现,也可以不包含代码实现。不包含代码实现的方法叫做抽象方法。3、子类继承抽象类,必须实现抽象类中的所有抽象方法。接口特性1、接口不能包含属性(也就是成员变量)2、接口职能声明方法,方法不能包含代码实现3、类实现接口的时候,必须实现接口中声明的所有方法。两者区别接口与抽象的重要区别,出去语法特征,最重要的是概念上,抽象更像是一种类的定义,而接口更像是协议。前者是属于和继承的关系,而接口是包含和具原创 2021-02-02 13:43:18 · 173 阅读 · 1 评论