进程与线程基本概念
进程与线程的区别
在现代操作系统中,进程是操作系统进行资源分配的基本单位(内存地址、文件 I/O 等),而线程是操作系统进行调度的基本单位,即CPU分配时间的单位。
线程是进程内部的一个执行单元。 每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。
(Observer Design Pattern)
观察者模式(Observer Design Pattern) 也被称为发布订阅模式(Publish-Subscribe Design Pattern)。在 GoF 的《设计模式》一书中,它的定义是这样的:
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
翻译成中文就是:在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。
一般情况下,被依赖的对象叫作被观察者(Observable),依赖的对象叫作观察者(Observer)。不过,在实际的项目开发中,这两种对象的称呼是比较灵活的,有各种不同的叫法,比如:Subject-Observer、Publisher-Subscriber、Producer-Consumer、EventEmitter-EventListener、Dispatcher-Listener。不管怎么称呼,只要应用场景符合刚刚给出的定义,都可以看作观察者模式。
总结回顾面向对象、设计原则、编程规范、重构技巧等知识点(Part1~Part4), 因为这部分是核心思想,设计模式只是在这些指导思想下总结出来的招式。理解这些思想原则了才能清楚在什么场景下该用哪种设计模式,用了之后能带来哪些优缺点。
在设计一个框架或者组件,甚至是项目中的某些模块时,经常都需要考虑扩展性, 而扩展性好应该符合以下两点:
而 Java SPI 可以很好的满足以上两点,从而达到良好的扩展性。
Java SPI(Service Provider Interface)是 JDK 内置的一种动态加载扩展点的实现,是一种“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。对扩展性支持非常友好,想要扩展实现,新只需要增实现接口,然后把接口的实现描述给JDK就行了。