
设计模式
rainyear
这个作者很懒,什么都没留下…
展开
-
观察者模式
简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者对象能够自动更新。 观察者模式的结构 观察者(Observer)模式是对象的行为型模式,又叫做发表-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-收听者(Source/List...原创 2012-08-31 00:42:10 · 169 阅读 · 0 评论 -
组合模式
组合模式将对象以树形结构组织起来,以达成“部分-整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。 水果类,相当于Componentpackage compositedemo;import java.util.ArrayList;import java.util.List;public abstract class Fruit { protected L...原创 2012-10-23 10:07:55 · 84 阅读 · 0 评论 -
桥梁模式
桥梁模式的用意是把抽象化与实现化脱耦。脱耦是说把抽象和实现之间的耦合解脱,或者说把强关联变成弱关联。桥梁模式的脱耦指的就是把抽象和实现之间的继承/实现关系变成组合/聚合关系。从而可以使两者可以相对独立的变化。这就是桥梁模式的本意。结构图如下:桥梁模式的关键是找出抽象化角色和具体化角色。典型应用是JDBC应用。JDBC API属于抽象化角色,而driver则属于具体化角色。...原创 2012-10-23 08:51:42 · 78 阅读 · 0 评论 -
策略模式
一.策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用一个接口,两个实现类1,2,一个client调用类,用于块定是调用类1还是类2.UML示意图二.组成部分:1. 环境角色:持有一个策略类引用2. 抽象策略3. 具体策略:相关的算法或操作三.代码例子1. 抽象策略package com.eekq.strateg...原创 2012-10-22 11:00:33 · 98 阅读 · 0 评论 -
装饰模式
装饰模式:给一个类添加一些额外的职责,并且在添加这些额外的职责时不会控制该类的执行逻辑。 UML类图: 组成部分: 抽象构件:原始的功能接口 具体构件:具体的原始功能类 装饰角色:持有具体构件类的对象,以便执行原有功能 具体装饰:具体扩展的功能在这里 1) 抽象构建角色(Component):给出一个抽象的接口,以规范准备接受附加责任的对象。相当于i/o流里面InputStream...原创 2012-10-22 10:51:15 · 88 阅读 · 0 评论 -
java设计模式笔记(菜鸟篇)
设计模式的分类:分布式编程模式,用户界面模式,数据模型模式三大类。 GoF设计模式的分类: 根据目的准则分类: 1. 创建型:creational 与对象的创建有关。 2. 结构型:Structural 处理类或对象之间的组合。 3. 行为型:behavioral 描述类或对象如何交互及如何分配职责。创建型模式(创建对象实例) 1.抽象工厂模式 AbstractFactory:把相关...原创 2012-10-22 10:36:47 · 221 阅读 · 0 评论 -
java 建造者模式
java 建造者模式建造模式的角色:1:抽象建造者角色2:具体建造者角色3:导演者角色4:产品角色使用建造模式的情况:1:需要生成的产品有复杂的内部结构2:需要生成的产品对象的属性互相依赖3:在对象的创建过程中会使用到其他对象抽象建造者角色:public abstract class Build { //kuang jia abstract void create...原创 2012-10-22 10:19:50 · 106 阅读 · 0 评论 -
单例模式
public class SingleTon(){ private static SingleTon singleTon =null; public static synchronized SingleTon getSingleTon(){ if(SingleTon !=null){ singleTon =new SingleTon(); } return...原创 2012-10-22 09:56:55 · 91 阅读 · 0 评论 -
工厂方法模式与抽象工厂模式
总结: 简单工厂模式:public interface car(){ public void drive();}public BMWcar() implements car{public void dosomething(){ System.out.println(" i am BMWcar,I am cool");}}public Ben...原创 2012-10-17 16:23:10 · 83 阅读 · 0 评论 -
关于java高并发设计整合-分布式事务(转发)
关于java高并发设计整合-分布式事务 1、高并发业务接口开发思路(实战)2、高并发---限流 用到的算法3、高并发思路-乐观锁 读写分离实际项目应用4、 5w 每秒的高并发秒杀功能5、分布式大数据高并发的web开发框架6、高并发环境下,Redisson实现redis分布式锁7、分布式高并发环境下的幂等控制8、 并发控制 集群 分布式9、高并发分布式系统中生...转载 2018-07-31 02:19:24 · 817 阅读 · 0 评论 -
适配器模式
把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。 问题引出:大家生活中可能碰到的一个问题就是你新买的手机自带的耳机是2.5接口的,不幸的是有一天你的耳机坏了,你去市面上根本就找不到2.5的耳机了,基本上是3.5接口了,没办法你只好买了个3.5接口的耳机,老板告诉你:“我给你一个适配器”这不...原创 2012-10-23 10:46:01 · 67 阅读 · 0 评论 -
原型模式。
创建型模式中还有一种与工厂方法模式完全不同的模式,就是原型模式。 原型模式(Prototype Pattern)是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。 用面向对象的方法来说就是,我们先建立一个原型,然后通过对原型进行复制和修饰的方法,就可以产生一个与原型相似的新对象。即:用原型实例指...原创 2012-10-23 15:06:16 · 89 阅读 · 0 评论 -
外观模式
比如在玩“极品飞车”这款游戏,你只需要等待的就是倒计时到0时以最快的车速冲到第一名,但游戏者根本没有想过在车冲出去之前要做哪些工作,比如挂档,离合器,油箱检测,调整方向等等的微操作,将这些微操作封装起来变成一个接口就是外观模式了。在WEB开发中的MVC分层架构就是典型的一个外观模式,每一层将操作的具体内容隐藏起来,保留一个接口供上层调用。 【外观模式解释】 类型:结构模...原创 2012-10-24 11:24:22 · 98 阅读 · 0 评论 -
简单工厂模式与工厂方法模式
1:简单工厂模式 UML图: 现实生活中例子:每次参加不同的聚会或者与不同的人见面,可能穿的衣服是不一样的,比如,你今天上午要与你的一个新客户见面,你可能会对你的老婆说:老婆,给拿件商务装(参数),我要去见我的一个客户,你老婆(工厂类)接到你的请求(商务装参数)后,从衣柜中取出一件商务装(具体产品),交给你。整个过程就...原创 2012-08-30 23:49:19 · 165 阅读 · 0 评论 -
模板模式
我们在看spring中有部分说到持久层,其中有个类JdbcTemplate,它是利用Template模式。Template模式就是说:在父类中定义一个操作算法或操作顺序,而将一些步骤的具体实现延迟到子类中。请看列子:// TemplateTest.java [java] view plaincopypackage com.designpattern...原创 2012-11-27 01:14:17 · 71 阅读 · 0 评论 -
访问者模式
访问者模式,顾名思义使用了这个模式后就可以在不修改已有程序结构的前提下,通过添加额外的“访问者”来完成对已有代码功能的提升。 《设计模式》一书中给出了访问者模式适用的情况: 1) 一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作。 2) 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而你想避免让这些操作“污染”这...原创 2012-11-22 02:59:05 · 95 阅读 · 0 评论 -
门面模式
外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。医院的例子用一个例子进行说明,如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须首先划价,然后...原创 2012-11-20 01:06:45 · 83 阅读 · 0 评论 -
追MM与设计模式
创建型模式 1、FACTORY —追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的...原创 2012-11-13 16:40:10 · 87 阅读 · 0 评论 -
命令模式
1.概念其实命令模式像很多设计模式一样——通过在你的请求和处理之间加上了一个中间人的角色,来达到分离耦合的目的。通过对中间人角色的特殊设计来形成不同的模式。当然命令模式就是一种特殊设计的结果。看下命令模式是有哪些角色来组成的吧。 1) 命令角色(Command):声明执行操作的接口。有java接口或者抽象类来实现。2) 具体命令角色(Co...原创 2012-11-04 23:50:43 · 81 阅读 · 0 评论 -
职责链模式
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。图如下:UML很简单,让我们先来看一个简单的例子。四. 职责链模式应用之请假管理请假这个事情,相信每个人都不陌生。我们公司是个相对很宽松的公司。在公司里,如果你的请假时间小于0.5天,那么只需要向项目经理...原创 2012-10-24 16:13:56 · 91 阅读 · 0 评论 -
享元模式
享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。单纯享元模式所涉及到的角色如下: ● 抽象享元(Flyweight)角色 :给出一个抽象接口,以规定出所有具体享元角色需要实现的方法。 ● 具体享元(ConcreteFlyweight)角色:实现抽象享元角色所规定出的接口。如果有内蕴状态的话,必须负责为内蕴状态提供存储空间。 ● 享元工厂(Flyweight...原创 2012-10-24 15:06:30 · 85 阅读 · 0 评论 -
代理模式和动态代理
所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。Proxy模式是很常见的模式,在我们生活中处处可见,例如我们买火车票不一定非要到火车站去买,可以到一些火车票的代售点去买。寄信不一定是自己去寄,可以把信委托给邮局,由邮局把信送到目的地。 1. 代理:一个角色代表别一个角色来完成某些...原创 2012-10-24 11:24:50 · 104 阅读 · 0 评论 -
观察者模式
简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者对象能够自动更新。 观察者模式的结构 观察者(Observer)模式是对象的行为型模式,又叫做发表-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-收听者(Sou原创 2013-04-26 17:14:53 · 796 阅读 · 0 评论 -
抽象类和接口
接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的, 另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。 还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如原创 2013-04-26 17:15:01 · 416 阅读 · 0 评论 -
门面模式
外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。医院的例子用一个例子进行说明,如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须首原创 2013-04-26 17:16:14 · 484 阅读 · 0 评论 -
模板模式
我们在看spring中有部分说到持久层,其中有个类JdbcTemplate,它是利用Template模式。Template模式就是说:在父类中定义一个操作算法或操作顺序,而将一些步骤的具体实现延迟到子类中。请看列子:// TemplateTest.java [java] view plaincopypackage com.designpatter原创 2013-04-26 17:16:46 · 477 阅读 · 0 评论 -
[置顶] java设计模式笔记(菜鸟篇)
设计模式的分类:分布式编程模式,用户界面模式,数据模型模式三大类。 GoF设计模式的分类: 根据目的准则分类: 1. 创建型:creational 与对象的创建有关。 2. 结构型:Structural 处理类或对象之间的组合。 3. 行为型:behavioral 描述类或对象如何交互及如何分配职责。创建型模式(创建对象实例) 1.抽象工厂模式 Abstr原创 2013-04-26 17:18:15 · 680 阅读 · 0 评论 -
组合模式
组合模式将对象以树形结构组织起来,以达成“部分-整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。 水果类,相当于Componentpackage compositedemo;import java.util.ArrayList;import java.util.List;public abstract class Fruit {原创 2013-04-26 17:15:17 · 514 阅读 · 0 评论 -
代理模式和动态代理
所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。Proxy模式是很常见的模式,在我们生活中处处可见,例如我们买火车票不一定非要到火车站去买,可以到一些火车票的代售点去买。寄信不一定是自己去寄,可以把信委托给邮局,由邮局把信送到目的地。 1. 代理:一个角色代表别一个角色来完成某些原创 2013-04-26 17:15:28 · 501 阅读 · 0 评论 -
享元模式
享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。单纯享元模式所涉及到的角色如下: ● 抽象享元(Flyweight)角色 :给出一个抽象接口,以规定出所有具体享元角色需要实现的方法。 ● 具体享元(ConcreteFlyweight)角色:实现抽象享元角色所规定出的接口。如果有内蕴状态的话,必须负责为内蕴状态提供存储空间。 ● 享元工厂(Fly原创 2013-04-26 17:15:31 · 660 阅读 · 0 评论 -
策略模式
一.策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用一个接口,两个实现类1,2,一个client调用类,用于块定是调用类1还是类2.UML示意图二.组成部分:1. 环境角色:持有一个策略类引用2. 抽象策略3. 具体策略:相关的算法或操作三.代码例子1. 抽象策略package com.原创 2013-04-26 17:15:13 · 470 阅读 · 0 评论 -
模板方法模式
【模板方法模式应用场景举例】 比如在玩“极品飞车”这款游戏,每辆车都有显示速度的仪表盘,但有可能A车显示的是蓝色的仪表盘,B车显示的是红色的仪表盘,分析中可以发现,他们都有车速度的值,但显示的方式不太一样。其实模板方法就是最典型的“继承”的使用,大家平时百分百都可以用到,只是不知道叫模板方法模式:)! 【模板方法模式解释】 类型:行为模式 模板方法模式定义一原创 2013-04-26 17:15:22 · 431 阅读 · 0 评论 -
外观模式
比如在玩“极品飞车”这款游戏,你只需要等待的就是倒计时到0时以最快的车速冲到第一名,但游戏者根本没有想过在车冲出去之前要做哪些工作,比如挂档,离合器,油箱检测,调整方向等等的微操作,将这些微操作封装起来变成一个接口就是外观模式了。在WEB开发中的MVC分层架构就是典型的一个外观模式,每一层将操作的具体内容隐藏起来,保留一个接口供上层调用。 【外观模式解释】 类型:结构模式原创 2013-04-26 17:15:26 · 443 阅读 · 0 评论 -
追MM与设计模式
创建型模式 1、FACTORY —追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相原创 2013-04-26 17:16:09 · 433 阅读 · 0 评论 -
桥梁模式
桥梁模式的用意是把抽象化与实现化脱耦。脱耦是说把抽象和实现之间的耦合解脱,或者说把强关联变成弱关联。桥梁模式的脱耦指的就是把抽象和实现之间的继承/实现关系变成组合/聚合关系。从而可以使两者可以相对独立的变化。这就是桥梁模式的本意。结构图如下:桥梁模式的关键是找出抽象化角色和具体化角色。典型应用是JDBC应用。JDBC API属于抽象化角色,而driver则属于具体化角色。其中需原创 2013-04-26 17:15:15 · 472 阅读 · 0 评论 -
工厂方法模式与抽象工厂模式
总结: 简单工厂模式:public interface car(){public void drive();}public BMWcar() implements car{public void dosomething(){System.out.println(" i am BMWcar,I am cool");}}public原创 2013-04-26 17:15:04 · 1086 阅读 · 0 评论 -
单例模式
public class SingleTon(){private static SingleTon singleTon =null;public static synchronized SingleTon getSingleTon(){if(SingleTon !=null){singleTon =new SingleTon();}return singleTon;原创 2013-04-26 17:15:06 · 481 阅读 · 0 评论 -
java 建造者模式
java 建造者模式建造模式的角色:1:抽象建造者角色2:具体建造者角色3:导演者角色4:产品角色使用建造模式的情况:1:需要生成的产品有复杂的内部结构2:需要生成的产品对象的属性互相依赖3:在对象的创建过程中会使用到其他对象抽象建造者角色:public abstract class Build { //kuang jia原创 2013-04-26 17:15:08 · 988 阅读 · 0 评论 -
装饰模式
装饰模式:给一个类添加一些额外的职责,并且在添加这些额外的职责时不会控制该类的执行逻辑。 UML类图: 组成部分: 抽象构件:原始的功能接口 具体构件:具体的原始功能类 装饰角色:持有具体构件类的对象,以便执行原有功能 具体装饰:具体扩展的功能在这里 1) 抽象构建角色(Component):给出一个抽象的接口,以规范准备接受附加责任的对象。原创 2013-04-26 17:15:10 · 459 阅读 · 0 评论 -
适配器模式
把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。问题引出:大家生活中可能碰到的一个问题就是你新买的手机自带的耳机是2.5接口的,不幸的是有一天你的耳机坏了,你去市面上根本就找不到2.5的耳机了,基本上是3.5接口了,没办法你只好买了个3.5接口的耳机,老板告诉你:“我给你一原创 2013-04-26 17:15:19 · 549 阅读 · 0 评论