Java设计模式
驼君
咸鱼一条
展开
-
Java并行程序设计模式——Guarded Suspension模式
问题引出假如说你的服务器在很短时间内承受了大量的客户端请求(如果这是你朋友用Python搞你的话请好好打他一顿),客户端请求量可能超过了服务器本身的即时处理量,而服务端程序又不能丢弃任何一个客户请求,应该怎么办?答:最佳处理方案莫过于让客户端排队请求进行排队,由服务端程序一个个处理。这样既保证了所有的客户端请求均不丢失,同时也避免了服务器由于同时处理太多的请求而崩溃。这就是Guarded Su...原创 2019-12-02 22:15:24 · 200 阅读 · 0 评论 -
Java并行程序设计模式——Master-Worker模式
Master-Worker模式是常用并行模式之一,他的核心思想是==系统由两类进程协作工作:Master进程和Worker进程。Master进程负责接收和分配任务,Worker进程负责处理子任务。==当各个Worker进程将子任务处理完成后,将结果集返回给Master进程,由Master进程做归纳和汇总,从而得到系统的最终结果好处能够将一个大任务分解成若干个小任务,并行执行,从而提高系统的吞...原创 2019-12-01 10:46:37 · 563 阅读 · 0 评论 -
Java并行程序设计模式——Future模式
问题引出现在我们想要炒一道菜,但是我们没有厨具和菜,现在我们从网上订购了一套厨具,但在厨具送来的期间,我们不必一直等到厨具到来,而是可以先去买菜,然后厨具到了之后直接开始炒菜这就是Future模式,在程序设计中,当某一段程序提交了一个请求,期望得到一个答复。但非常不幸的是,服务程序对这个请求的处理可能很慢,比如这个请求可能是通过互联网、HTTP或者Web Service等并不太高效的方式调用的...原创 2019-11-30 15:21:23 · 467 阅读 · 0 评论 -
Java设计模式——Value Object(值对象)模式
问题引出当客户端需要获取一个订单(Order)的信息,假设一个订单由客户名、商品名和数量构成,那么客户端需要与服务端交互三次,依次取得这些信息这样设计是一种可行的方案,但存在两个严重的问题(出大问题 )对于获取一个订单而言,这种操作模式过于繁琐,且不具备较好的可维护性前后累计进行了三次客户端与服务端的通讯,性能成本较高解决方法:Value Object(值对象)模式Val...原创 2019-11-20 19:57:18 · 2665 阅读 · 0 评论 -
Java设计模式——观察者模式
问题引出气象站需要实时播报天气变化情况,需要我们帮助他设计一个方案解决这个问题普通方法设计一个WeatherData类,里面包含天气的各种属性,同时气象站实时监控天气,通过定时器每隔一段时间检测一次天气是否变化问题:这样设计的话,需要单独开启一个线程,不停地监听对象的状态,如果在一个负载的系统中,可能会因此开启很多线程来实现这一功能,这将使系统的性能产生额外的负担解决方案:通过天气类想...原创 2019-11-19 21:03:41 · 228 阅读 · 0 评论 -
Java设计模式——装饰者模式
问题引出如果我们想喝一杯咖啡,而咖啡又分为意大利浓咖啡(Espresso),美式咖啡,无因咖啡,同时又有牛奶、豆浆(别问我为什么加豆浆,加就对了)、巧克力等配料,所以我们的咖啡就有很多种选择,这时程序应该怎么设计?很蠢的方法:Drink是一个抽象类,表示饮料des是对咖啡的描述,比如说咖啡的名字cost()方法时计算费用咖啡种类+配料,这个组合有很多,每一个组合为一个类...原创 2019-11-18 20:56:32 · 178 阅读 · 0 评论 -
Java设计模式——单例模式
简介所谓单例模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得对象实例的方法(静态方法)单例模式注意事项和使用说明单例模式保证了系统内存中只存在一个对象,节省了系统资源,对一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能实例化一个单例类时,要调用获取对象的方法而不是new单例模式使用场景:需要频繁创建和销毁的对象、创建...原创 2019-11-17 11:45:48 · 105 阅读 · 0 评论 -
Java设计模式——代理模式
代理模式是一种非常常见的设计模式,他使用代理对象完成用户请求,屏蔽用户对真是对象的访问。就如同现实中的代理一样,代理人被授权执行当事人的一些事宜,而无需当事人出面,从第三方角度来看,似乎当事人不存在,因为他只和代理人通信,而事实上,代理人是要有当事人的授权,并且在核心问题上还需要请示当事人。介绍通过代理对象访问目标对象可以在目标对象实现的基础上增强额外的功能操作,即扩展目标对象的功能...原创 2019-11-16 18:24:28 · 111 阅读 · 0 评论 -
Java设计模式——享元模式
本咸鱼开始修炼内功了,加油,奥利给!!!问题引出如果我们做一个小型外包网站项目,有的客户想以新闻的形式发布,有的客户想以博客的形式发布,有的客户想以微信公众号的形式发布,我们该怎么办?传统解决方案直接复制一份原网站,然后根据不同的需求进行修改,同时给每个网站租用一个空间享元模式简介享元模式(Flyweight Pattern)也称蝇量模式享元模式能够解决重复对象的内存浪费...原创 2019-11-14 19:54:34 · 152 阅读 · 0 评论