1.单例模式
应用实例:1.一个党只能有一个主席.2.Windows是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。3.一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。
2.工厂模式
应用实例:1.你需要一辆汽车,你可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现 2.Hibernate换数据库只需换方言和驱动就可以
3.抽象工厂
应用实例:工作了,为了参加一些聚会,肯定有两套或多套衣服吧,比如说有商务装(成套,一系列具体产品)、时尚装(成套,一系列具体产品),甚至对于一个家庭来说,可能有商务女装、商务男装、时尚女装、时尚男装,这些也都是成套的,即一系列具体产品.咱们假设一种情况(现实中是不存在的,要不然,没法进入共产主义了,但有利于说明抽象工厂模式),在你的家中,某一个衣柜(具体工厂)只能存放某一种这样的衣服(成套,一系列具体产品),每次拿这种成套的衣服时也自然要从这个衣柜中取出了.用OO的思想去理解,所有的衣柜(具体工厂)都是衣柜类的(抽象工厂)某一个,而每一件成套的衣服又包括具体的上衣(某一具体产品),裤子(某一具体产品),这些具体的上衣其实也都是上衣(抽象产品),具体的裤子也都是裤子(另一个抽象产品).
4.建造者模式
应用实例:1.去肯德基,汉堡,可乐,薯条,炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的“套餐”2.JAVA中的StringBuilder
5.原型模式
应用实例:1.细胞分裂 2.JAVA中的Object clone()方法
6.适配器模式
应用实例:1.美国电器110V,中国220V,就要有一个适配器将110V转化为220V 2.JAVA JDK 1.1提供了Enumeration接口,而在1.2中提供了Iterator接口,想要使用1.2 的JDK,则要将以前系统的Enumeration接口转化为Iterator接口,这时就需要适配器模式 3.在LINUX上运行WINDOWS程序 4.java中的jdbc
7.组合模式
应用实例:1.算术表达式包括操作数、操作符和另一个操作数,其中,另一个操作符也可以是操作树,操作符和另一个操作数 2.在JAVA AWT和SWING中,对于Button和Checkbox是树叶,Container是树枝
8.装饰模式
应用实例:1.孙悟空有72变,当他变成“庙宇”后,他的根本还是一只猴子,但是他又有了庙宇的功能 2.不论一幅画有没有画框都可以挂在墙上,但是通常都是有画框的,并且实际上是画框被挂在墙上。在挂在墙上之前,画可以被蒙上玻璃,装到框子里;这时画、玻璃和画框形成了一个物体。
9.代理模式
应用实例:1.windows里面的快捷方式 2.猪八戒去找高翠兰结果是孙悟空变的,可以这样理解:把高翠兰的外貌抽象出来,高翠兰本人和孙悟空都实现了这个接口,猪八戒访问高翠兰的时候看不出来这个是孙悟空,所以说孙悟空是高翠兰代理类。3.买火车票票不一定在火车站买,也可以去代售点 4.一张支票或银行存单是账户中资金的代理。支票在市场交易中用来代替现金,并提供对签发人账号上资金的控制。 5.spring aop
10.享元模式
应用实例:1.JAVA中的String,如果有则返回,如果没有则创建一个字符串保存在字符串缓存池里面 2.数据库的数据池
11.门面模式
应用实例:1.去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便 2.JAVA的三层开发模式
12.桥接模式
应用实例:1、猪八戒从天蓬元帅转世投胎到猪,转世投胎的机制将尘世划分为两个等级,即:灵魂和肉体,前者相当于抽象化,后者相当于实现化。生灵通过功能的委派,调用肉体对象的功能,使得生灵可以动态的选择 2、墙上的开关,自己可以看到的开关是抽象的,里面具体怎么实现我们不管
13.策略模式
应用实例:1、诸葛亮的锦囊妙计,每一个锦囊就是一个策略 2、旅行的出游方式,选择骑自行车、坐汽车每一种旅行方式都是一个策略 3、JAVA AWT中的LayoutManager
14.模板方法模式
应用实例:1、在造房子的时候,地基、走线、水管都一样,只有在建筑的后期才有加壁橱加栅栏等差异 2、西游记里面菩萨定好的81难,这就是一个顶层的逻辑骨架 3、Spirng中对Hibernate的支持,将一些已经定好的方法封装起来,比如开启事务、获取Session、关闭Session等,程序员不重复写那些已经规范好的代码,直接丢一个实体就可以保存
15.观察者模式
应用实例:1、拍卖的时候,拍卖师观察最高标价,然后通知给其他竞价者竞价 2、西游记里面悟空请求菩萨降服红孩儿,菩萨洒了一地水招来一个老乌龟,这个乌龟就是观察者,他观察菩萨洒水这个动作
16.迭代器模式
应用实例:JAVA中的iterator
17.责任链模式
应用实例:1、红楼梦中的“击鼓传花”2、JS中的事件冒泡 3、JAVA WEB中 Apache Tomcat 的对Encoding的 处理,Struts2 的拦截器, jsp servlet 的Filte
18.命令模式
应用实例:struts 1中的action 核心控制器ActionServlet只有一个,相当于Invoker,而模型层的类会随着不同的应用有不同的模型类,相当于具体的Command
19.备忘录模式
应用实例:1、后悔药 2、打游戏时的存档 3、Windows里的ctri + z 4、IE中的后退 4、数据库的事务管理 5、WEB中的SESSION和COOKIE 6、孙悟空将人参树推到,后求助于观音,观音撒了几滴水,数九附后了,其中孙悟空是发起人,人参树是具体对象(Originator),那几滴水是备忘录角色(Memento),观音是负责人角色(Caretaker)
20.状态模式
应用实例:1、打篮球的时候运动员可以有正常状态,不正常状态,和超常状态 2、曾侯乙编钟中,‘钟是抽象接口’,‘钟A’等是具体状态,‘曾侯乙编钟‘是具体环境(Context)
21.访问者模式
应用实例:你在朋友家做客,你是访问者,朋友接受你的访问,你通过朋友的描述,然后对朋友的 描述做出一个判断,这就是访问者模式
22.解释器模式
应用实例:编译器、运算表达式计算
23.中介者模式
应用实例:1 、中国加入WTO,之前是各个国家相互贸易,结构复杂,现在是各个通过WTO来互相贸易 2、机场调度系统 3、 MVC框架,其中C(控制器)就是M和V的中介者