终结器是不可预测的、常常会很危险,⽽且通常没必要。使⽤终结器会导致奇怪的⾏为、孱弱的性能以及可移植性问题。终结器存在⼀些使⽤场景,稍后就会介绍,不过作为⼀条原则,你应该避免使...

终结器是不可预测的、常常会很危险,⽽且通常没必要。使⽤终结器会导致奇怪的⾏为、孱弱的性能以及可移植性问题。终结器存在⼀些使⽤场景,稍后就会介绍,不过作为⼀条原则,你应该避免使...
规范不仅没有提供终结器或是清理器会⽴刻运⾏的保证,也没有对其⼀定会运⾏提供任何保证。完全有可能出现这样的情况,当程序终⽌时,它并没有对早就处于不可达的对象运⾏其终结器和清理器...
条款7:消除废弃的对象引用(二) 当程序员初次遇到这个问题时,他们会采取矫枉过正的措施:当程序使⽤完对象后,会将每个对象引⽤都设为null。这么做既没必要,也不值得;它会毫⽆...
条款7:消除废弃的对象引用(一) 如果你从⼀⻔需要⼿动进⾏内存管理的语⾔(如C或是C++)转到了垃圾回收语⾔(如Java),那么作为程序员来说,你的⼯作会简化很多,因为对象在...
条款6:避免创建不必要的对象(二) 如果包含了改进版本isRomanNumeral⽅法的类被初始化了,但该⽅法却永远没有被调⽤,那么字段ROMAN的初始化就是毫⽆必要的。可以...
条款6:避免创建不必要的对象(一) 在需要⼀个对象时,恰当的做法是尽可能重⽤这个对象⽽⾮创建⼀个功能完全⼀样的新对象。重⽤既快⼜时髦。如果对象是不可变的,那么它总是可以被重⽤...
第八章 抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创...
第七章 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式...
条款5:优先选择依赖注⼊⽽非硬编码资源的关联关系 很多类都会依赖于⼀个或多个底层资源。⽐如说,拼写检查器会依赖于字典。我们常常会看到这种类被实现为了静态辅助类(条款4): 与...
条款4:通过私有构造⽅法强制禁⽌类的实例化 有时,你想要编写⼀个只包含⼀组静态⽅法和静态字段的类。这种类有⼀个不太好的名声,因为有些⼈会滥⽤他们,不从对象的⻆度来思考,⽽是坚...
第六章 桥接模式 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的...
条款3:强制对单例属性使用私有构造⽅法或是枚举类型 所谓单例,指的是只会实例化⼀次的类[Gamma95]。单例要么表示⼀个⽆状态的对象(⽐如说函数,条款25),要么表示⼀个本...
第五章 装饰模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一...
静态⼯⼚与构造⽅法有⼀个共通的限制:当存在⼤量的可选参数时,他们的可伸缩性很差。考虑这样⼀个类,它表示贴在包装好的⻝品上的营养表标签。这些标签有⼀些必要的字段,如分量⼤⼩、每...
第一章 创建和销毁对象 条款1:考虑使⽤静态⼯⼚⽅法⽽⾮构造⽅法 对于⼀个类来说,若想让客户端能够获取到其实例,传统⽅式是提供⼀个公有的构造⽅法。实际上,还有另外⼀种技术应该...
第四章 观察者模式 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模...
第三章 策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式在策略模式中,我们创建表示各种策略的...
第二章 模板方法模式 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的...
第一章 设计模式简介 1.1 面向对象设计原则 对接口编程而不是对实现编程 优先使用对象组合而不是继承 1.2 设计模式的类型 总共有 23 种设计模式。这些模式可以分为三大...