
设计模式
heqianqiann
每一个不曾起舞的日子都是对生命的辜负
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式Design Patterns (一)
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一原创 2017-03-10 21:07:49 · 2868 阅读 · 1 评论 -
设计模式 Concurrency 之 Half_Sync_Half_Async 半同步半异步模式
动机应用场景实现方案1.动机同步模式编程简单 但是IO的利用率低异步模式编程复杂 但是IO利用率高此模式综合了同步异步的优缺点 高层中使用同步IO模型,简化编程。低层使用异步IO模型 高效执行2.应用场景1.系统必须响应和处理外部异步发生的事件2、一个或多个任务必须在单独的控制线程中执行 其他任务可以在多线程执行 上层任务[数据库查询,文件传输]使用同步IO模式 简化编写并行程序的原创 2017-08-09 09:07:21 · 524 阅读 · 0 评论 -
设计模式 Concurrency 之 Balking 慢行模式
定义例子1.定义当现在不适合这个操作,或者没有必要进行这个操作时,就直接放弃而回去 2.例子WashinMachineStatepackage com.hqq.concurrency.balking;/** * WashingMachineState * Created by heqianqian on 2017/7/30. */public enum WashingMachineStat原创 2017-08-09 09:20:31 · 684 阅读 · 0 评论 -
设计模式 Concurrency 之 Semaphore 信号量
定义适用场景例子1.定义Semaphore是一种基于计数的信号量。它可以设定一个阈值,基于此,多个线程竞争获取许可信号,做完自己的申请后归还,超过阈值后,线程申请许可信号将会被阻塞。Semaphore可以用来构建一些对象池,资源池之类的,比如数据库连接池,我们也可以创建计数为1的Semaphore,将其作为一种类似互斥锁的机制,这也叫二元信号量,表示两种互斥状态2. 适用场景保护一个重要[代码原创 2017-08-09 09:52:10 · 727 阅读 · 0 评论 -
设计模式 Concurrency 之 Mutex 互斥锁
定义例子1. 定义不同线程通过竞争进入临界区(共享的数据和硬件资源),为了防止访问冲突,在有限的时间内只允许其中之一独占性的使用共享资源。是Semaphore的特殊情况 当信号量的阈值设为1时就是互斥锁模式2. 例子Lockpackage com.hqq.concurrency.mutex;/** * Lock * Created by heqianqian on 2017/7/29. */原创 2017-08-09 10:09:01 · 850 阅读 · 0 评论 -
设计模式 Concurrency 之 ReadWriteLock 读写锁
定义例子1. 定义这种模式允许同步的读操作,但是写操作会加排他锁.意味着多线程可以进行读操作,但是修改数据的时候需要加排他锁当一个线程在写数据时,其他读或写线程会一直阻塞到当前线程完成写操作2. 例子ReadWriteLockpackage com.hqq.concurrency.read_write_lock;import java.util.HashSet;import java.u原创 2017-08-09 10:30:04 · 453 阅读 · 0 评论 -
设计模式 Concurrency 之 ProducerConsumer 生成者消费者模式
定义优缺点例子1. 定义某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。2. 优缺点优点:解耦 假设生产者和消费者分别是两个类。如果让生产者直接调用消费者的某个方法,那么生产者对于消费者就会产生依赖(也就是耦合)。将来如果消费者的代码发生变化,可能会影响到生产者。而如原创 2017-08-09 10:44:19 · 552 阅读 · 0 评论 -
设计模式 六大原则
之前面试的时候有被问到过这个问题 (一) 单一职责原则不要存在多余一个导致类变更的原因。(一个类只负责一项职责)问题:类T负责两个不同的职责P1、P2,当由于职责P1需求发生改变而需要改变T时,可能会导致原来运行正常的P2功能出现故障。解决方法:遵循单一职责原则,分别建立类T1、T2,分别负责P1,P2职责,这样修改类T1时不会影响P2。遵循单一职责原则的优点有:降低类的复杂度提高类的可读性,提原创 2017-11-02 18:44:37 · 360 阅读 · 0 评论