自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(177)
  • 收藏
  • 关注

原创 设计模式之工厂方法

定义一个用于创建对象的接口,让子类决定实例化哪一个类。

2024-04-19 18:14:32 142

原创 设计模式之简单工厂

提供一个创建对象实例的功能,而无须关心具体实现。被创建的实例的可以是接口、抽象类、也可以是具体的类。

2024-04-19 18:12:59 364

原创 设计模式之转换器模式

转换器模式的目的是提供相应类型之间双向转换的通用方法,允许进行干净的实现,而类型之间无需相互了解。此外,Converter模式引入了双向集合映射,从而将样板代码减少到最少。

2024-04-19 18:10:24 130

原创 设计模式之单例模式

确保一个类只有一个实例,并为其提供一个全局的访问点。

2024-04-19 18:08:54 474

原创 06.消除过期的对象引用

当程序员第一次被类似这样的问题困扰的时候,它们往往会过分小心:对于每一个对象的引用,一旦程序不再用到它,就把它清空。其实这样做即没必要,也不是我们所期望的,因为这样做会把程序代码弄得很乱。清空对象引用应该是一种例外,而不是一种规范行为。消除过期引用最好的方法是让包含该引用的变量结束其生命周期。如果你是在最紧凑的作用域范围内定义每一个变量(第57项),这种情形就会自然而然地发生。那么,何时应该清空引用呢?Stack类的哪方面特性使它易于遭受内存泄漏的影响呢?简而言之,问题在于,

2024-04-02 17:24:04 384

原创 05.避免创建不必要的对象

不要错误地认为本项所介绍的内容暗示着“创建对象的代价非常昂贵,我们就应该尽可能地避免创建对象”。相反,由于小对象的构造器只做很少量的显示工作,所以,小对象的创建和回收动作是非常廉价的,特别是在现代的JVM实现上更是如此。通过创建附加的对象,提升程序的清晰性、简洁性和功能性,这通常是件好事。

2024-04-02 17:23:24 335

原创 04.优先考虑依赖注入来引用资源

总而言之,不要用Singleton和静态工具类来实现依赖一个或多个底层资源的类,且该资源的行为会影响到该类的行为,也不要用这个类来创建这些资源。而应该将这些资源或者工厂传给构造器(或者静态工厂或者构建器),通过它们来创建类,这个实践就被称为依赖注入,它极大提升了类的灵活性、可重用性和可测试性。

2024-04-02 17:22:42 392

原创 03.通过私有构造器强化不可实例化的能力

有时可能我们在开发的过程中需要编写静态方法和静态域的类,这些类不希望被实例化,因为实例化对它没有任何意义。那么我们该如何去做呢?这种类无法子类化,因为所有的构造器必须显式或隐式地调用超类构造器,这种情况下,子类无法访问的超类构造器。我们可以通过私有构造器方法,控制实例化能力,

2024-04-02 17:21:53 303

原创 02.用私有构造器或者枚举类型强化Singleton属性

单元素枚举类型经常成为Singleton最佳方法,注意,如果Singleton必须扩展一个超类,而不是扩展Enum的时候,则不适用适用这个方法(虽然可以声明枚举去实现接口)

2024-04-02 17:20:20 1027

原创 01.遇到多个构造器参数时要考虑使用构建器

Builder模式的客户端代码很容易编写,一步一步就点出来了,更为重要的是易读,Builder模式模拟了具名的可选参数。

2024-04-01 17:33:45 657

原创 00.用静态工厂方法代替构造器

简而言之,静态工厂方法和公有构造器都有用处,我们需要理解它们各自的长处。静态工厂经常更加合适,因此切忌第一反应就是提供公有的构造器,而不先考虑静态工厂。

2024-04-01 16:50:58 121

原创 软件设计重构秘笈31式-30使用多态代替条件判断

使用多态代替条件判断“这个重构在很多时候会出现设计模式中(常见的工厂家族、策略模式等都可以看到它的影子),因为运用它可以省去很多的条件判断,同时也能简化代码、规范类和对象之间的职责。

2024-03-29 13:07:01 271

原创 软件设计重构秘笈30式-29尽快返回

总结:这个重构很重要,它和前面讲的”分解复杂判断“有些类似,我们在做复杂的处理过程时,要经常考虑这个重构,用好了它,会对我们的帮助很大。

2024-03-29 13:06:46 150

原创 软件设计重构秘笈29式-28去除中间人对象

去除中间人对象“很多时候都会很有作用,尤其是在误用设计模式的代码中最容易见到,设计模式中的适配器模式和代理模式等都用中间的类是两者进行关联,这是比较合理的,因为中间类做了很多事情,而对于没有任何作用的中间类应该移除。

2024-03-28 17:02:49 349

原创 软件设计重构秘笈28式-27为布尔方法命名

为布尔方法命名“这个重构在很多时候都不常用,如果用户的参数可枚举,我们一般会枚举它的值,不过使用这种重构也有好处,就是分解开来以后,方法多了,参数少了,代码维护起来方便了一些。

2024-03-28 17:02:18 446

原创 软件设计重构秘笈27式-26去除上帝类

去除上帝类“是我们经常容易造成的,第一是因为简便,看到有一个现成的类,大家都会喜欢把代码往里面写,最后导致越写越大,并且声明功能都有,这样即降低了可读性,也造成了维护的负担。

2024-03-28 17:01:33 339

原创 软件设计重构秘笈26式-25避免双重否定

双重否定“很容易让人产生错误的判断,也很难让人理解你的代码,所以这个重构在我们的代码中是很重要的,尤其是在判断条件很多且业务复杂的时候。

2024-03-28 17:00:42 275

原创 软件设计重构秘笈25式-24引入契约模式

上面的代码中添加了额外的代码来进行验证,虽然看起来代码复杂度增加了,但我认为这是非常值得做的,因为当NullPointerException发生时去追查异常的详细信息真是很令人讨厌的事情。这个重构建议大家经常使用,这会增强整个系统的稳定性和健壮性。

2024-03-28 16:59:33 398

原创 软件设计重构秘笈24式-23分解复杂判断

这个重构很重要,它和后面讲的”尽快返回“有些类似,我们在做复杂的处理过程时,要经常考虑这个重构,用好了它,会对我们的帮助很大。

2024-03-28 16:58:51 329

原创 软件设计重构秘笈23式-22引入参数对象

这种重构很重要,尤其是当一个方法的参数比较多的时候,不管是大中型项目还是小型项目,都会遇到这种场景,所以建议大家多使用这个重构。这种封装的思想在SOA 里面也经常运用到,封装输入Message,封装输出Message,消息来和消息去以及消息间的交互就构成了整个应用体系。

2024-03-28 16:58:10 348

原创 软件设计重构秘笈22式-21分解方法

其实这个重构和我们前面讲的“提取方法”和“提取方法对象”如出一辙,尤其是“提取方法”,所以大家只要知道用这种思想重构就行。

2024-03-28 16:57:32 303

原创 软件设计重构秘笈21式-20合并继承

这篇和上篇其实最主要论述了子类和父类的继承关系以及如何判断什么时候需要使用继承,一般我们都能处理好这些关系,所以相对比较简单。

2024-03-28 16:56:51 340

原创 软件设计重构秘笈20式-19提取子类

这个重构方法经常用来规范类的职责,和之前的一些重构方法也有些类似。

2024-03-28 16:56:10 264

原创 软件设计重构秘笈19式-18提取工厂类

这个重构经常会在项目中使用,如果要创建的对象是一个,你可以采用简单工厂,但是这种方式还是会存在很多依赖,维护起来也比较不方便。所以推荐使用工厂方法模式,把实例化延迟到子类。如果你要创建一系列的对象,那么就推荐你使用抽象工厂模式,但是要注意不要过度设计,只要能满足不断变化的需求和给以后的维护和重构带来方便即可。

2024-03-28 16:55:27 284

原创 软件设计重构秘笈18式-17使用条件判断代替异常

这个重构在项目代码中也经常用到,因为对于一部分程序员,是很难把握什么时候用try catch ,什么地方该用try catch。记得之前大家还专门讨论过这些,比如如何用好以及在大中型项目中应该把它放在哪一个组件中等。

2024-03-28 16:54:27 242

原创 软件设计重构秘笈17式-16提取父类

这个重构是典型的继承用法,很多程序员都会选择这样做,但是要注意正确的使用,不要造成过度使用了继承,如果过度使用了,请考虑用接口、组合和聚合来实现。

2024-03-28 16:53:24 287

原创 软件设计重构秘笈16式-15封装条件

这个重构在很大程度上能改善代码的可读性,尤其是在一个逻辑很复杂的应用中,把这些条件判断封装成一个有意义的名字,这样很复杂的逻辑也会立刻变得简单起来。

2024-03-28 16:52:43 282

原创 软件设计重构秘笈15式-14移除重复内容

这个重构很简单,绝大多数程序员都会使用这种重构方法,但有时由于习惯、时间、赶进度等原因而忽略它,所以会使得整个系统杂乱无章,到处都是Ctrl+C和Ctrl+V的痕迹。

2024-03-28 16:51:54 151

原创 软件设计重构秘笈14式-13分离职责

这个重构经常会用到,它和之前的“移动方法”有几分相似之处,让方法放在合适的类中,并且简化类的职责,同时这也是设计原则中五大原则之一和设计模式中的重要思想。

2024-03-27 16:45:31 147

原创 软件设计重构秘笈13式-12提取方法对象

这种重构在设计模式当中把它单独取了一个名字——策略模式,这样做的好处就是可以隔开耦合,以注入的形式实现功能,这使增加功能变得更加容易和简便,同样也增强了整个系统的稳定性和健壮性。

2024-03-27 16:44:38 312

原创 软件设计重构秘笈12式-11分解依赖

这种重构在设计模式当中把它单独取了一个名字——策略模式,这样做的好处就是可以隔开耦合,以注入的形式实现功能,这使增加功能变得更加容易和简便,同样也增强了整个系统的稳定性和健壮性。

2024-03-27 16:43:00 244

原创 软件设计重构秘笈11式-10使用策略类

这种重构在设计模式当中把它单独取了一个名字——策略模式,这样做的好处就是可以隔开耦合,以注入的形式实现功能,这使增加功能变得更加容易和简便,同样也增强了整个系统的稳定性和健壮性。

2024-03-27 16:41:52 174

原创 软件设计重构秘笈11式-10使用策略类

这种重构在设计模式当中把它单独取了一个名字——策略模式,这样做的好处就是可以隔开耦合,以注入的形式实现功能,这使增加功能变得更加容易和简便,同样也增强了整个系统的稳定性和健壮性。

2024-03-27 16:41:20 185

原创 软件设计重构秘笈10式-09提取方法

这个重构在很多公司都有一些的代码规范作为参考,比如一个类不能超过多少行代码,一个方法里面不能超过多少行代码,这在一定程度上也能使程序员把这些复杂的逻辑剥离成意义很清楚的小方法。

2024-03-27 16:40:35 266

原创 软件设计重构秘笈9式-08提取接口

这个重构策略也是一个常见的运用,很多设计模式也会在其中运用此思想(如简单工程、抽象工厂等都会通过接口来解开依赖)。

2024-03-27 16:39:50 453

原创 软件设计重构秘笈8式-07组合替代继承

这个重构是一个很好的重构,在很大程度上解决了滥用继承的情况,很多设计模式也用到了这种思想(比如桥接模式、适配器模式、策略模式等)。

2024-03-27 16:39:09 582

原创 软件设计重构秘笈7式-06重命名

此重构经常被广大程序员所忽视,但是带来的隐患是不可估量的,也许老板要修改功能,那我们来看这段没有重构的代码(就算是自己写的,但由于时间和项目多等关系,我们也很难理解了),然后就会变得焦头烂额。相反重构后的代码就会觉得一目了然、赏心悦目。

2024-03-27 16:38:22 394

原创 软件设计重构秘笈6式-05降低字段

此重构也是一个非常简单的重构,在很多时候我们都会不自觉的使用它。

2024-03-27 16:37:43 151

原创 软件设计重构秘笈5式-04提升字段

这个重构的策略比较简单,同时也是比较常用的一些做法,最主要就是要注意权衡是否真的有这个必要,看这样做究竟有没有什么好处(比如只需要改一个地方,维护简便了,同时代码量也更少了等)。

2024-03-27 16:36:34 169

原创 软件设计重构秘笈4式-03降低方法

本文中的降低方法和前篇的提升方法整好相反,也就是把个别子类使用到的方法从基类移到子类里面去。

2024-03-27 15:49:02 121

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除