Java设计模式

上传人:豆浆 文档编号:47160523 上传时间:2018-06-30 格式:PPT 页数:75 大小:267.50KB
返回 下载 相关 举报
Java设计模式_第1页
第1页 / 共75页
Java设计模式_第2页
第2页 / 共75页
Java设计模式_第3页
第3页 / 共75页
Java设计模式_第4页
第4页 / 共75页
Java设计模式_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《Java设计模式》由会员分享,可在线阅读,更多相关《Java设计模式(75页珍藏版)》请在金锄头文库上搜索。

1、Java与设计模式设计模式l分类创建模式结构模式行为模式l优点面向界面编程降低耦合性增加灵活性創建模式創建模式设计模式之Factory -工厂模式l客户类和工厂类分开。消费者任何时候需 要某种产品,只需向工厂请求即可。消费 者无须修改就可以接纳新产品。l缺点是当产品修改时,工厂类也要做相应 的修改。设计模式之Factory -工厂模式l麦当劳的鸡翅和肯德基的鸡翅虽然口味有所不同,但不管 你去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行 了。麦当劳和肯德基就是生产鸡翅的Factory l工厂模式分为三种:l1、简单工厂(Simple Factory)模式:又称静态工厂方法 (Static F

2、actory Methord)模式。l2、工厂方法(Factory Method)模式:又称多态性工厂 (Polymorphic Factory)模式或虚拟构造子(Virtual Constructor)模式。l3、抽象工厂(Abstract Factory)模式:又称工具箱(Kit 或Toolkit)模式。设计模式之Simple Factory-简单工厂模式lpublic class Factory l public static Sample creator(int which)l /getClass 产生Sample 一般可使用动态类装 载装入类。if (which=1)return n

3、ew SampleA();else if (which=2)return new SampleB();l l设计模式之FACTORY METHOD -工厂方 法模式l核心工厂类不再负责所有产品的创建,而 是将具体创建的工作交给子类去做,成为 一个抽象工厂角色,仅负责给出具体工厂 类必须实现的接口,而不接触哪一个产品 类应当被实例化这种细节。设计模式之FACTORY METHOD -工厂模 式l请MM去麦当劳吃汉堡,不同的MM有不同 的口味,要每个都记住是一件烦人的事情 ,我一般采用Factory Method模式,带着 MM到服务员那儿,说“要一个汉堡”,具体 要什么样的汉堡呢,让MM直接跟服

4、务员说 就行了。 设计模式之FACTORY METHOD -工厂方 法模式lpublic abstract class Factory l public abstract Sample creator(); l public abstract Sample2 creator(String name); l lpublic class SimpleFactory extends Factory l public Sample creator().return new SampleA l public Sample2 creator(String name).return new Sample2A

5、 l lpublic class BombFactory extends Factory l public Sample creator().return new SampleB l public Sample2 creator(String name).return new Sample2B l设计模式之Abstract Factory 抽象工厂模 式l抽象工厂模式可以向客户端提供一个接口 ,使得客户端在不必指定产品具体类型的 情况下,创建多个产品族中的产品对象。 这就是抽象工厂模式的用意。每个模式都是针对一定问题的解决方案 。抽象工厂模式面对的问题是多产品等级 结构的系统设计。 設計模式之

6、設計模式之BuilderBuilder -建造模式l将产品的内部表象和产品的生成过程分割 开来,从而使一个建造过程生成具有不同 的内部表象的产品对象。建造模式使得产 品内部表象可以独立的变化,客户不必知 道产品内部组成的细节。l建造模式可以强制实行一种分步骤进行的 建造过程。 設計模式之設計模式之BuilderBuilder -建造模式lMM最爱听的就是“我爱你”这句话了,见到 不同地方的MM,要能够用她们的方言跟她说 这句话哦,我有一个多种语言翻译机,上 面每种语言都有一个按键,见到MM我只要 按对应的键,它就能够用相应的语言说出“ 我爱你”这句话了,国外的MM也可以轻松 搞掂,这就是我的“

7、我爱你”builder。設計模式之設計模式之BuilderBuilder -建造模式lpublic interface Builder l /創建部件A 比如創建汽車車輪void buildPartA(); /創建部件B 比如創建汽車方向盤void buildPartB(); /創建部件C 比如創建汽車發動機void buildPartC(); /返回最後組裝成品結果 (返回最後裝配好的汽車)/成品的組裝過程不在這裏進行,而是轉移到下面的Director類別中進行。/從而實現瞭解耦過程和部件Product getResult(); lpublic class Director l privat

8、e Builder builder; l public Director( Builder builder ) this。builder = builder; / 將部件partA partB partC最後組成複雜物件/這裏是將車輪 方向盤和發動機組裝成汽車的過程public void construct() builder.buildPartA();builder.buildPartB();builder.buildPartC(); l l 設計模式之設計模式之PROTOTYPEPROTOTYPE - -原始模型模式原始模型模式l通过给出一个原型对象来指明所要创建的 对象的类型,然后用复制

9、这个原型对象的 方法创建出更多同类型的对象。原始模型 模式允许动态的增加或减少产品类,产品 类不需要非得有任何事先确定的等级结构 ,原始模型模式适用于任何的等级结构。l缺点是每一个类都必须配备一个克隆方法 。 設計模式之設計模式之PROTOTYPEPROTOTYPE - -原始模型模式原始模型模式l跟MM用QQ聊天,一定要说些深情的话语 了,我搜集了好多肉麻的情话,需要时只 要copy出来放到QQ里面就行了,这就是我 的情话prototype了。設計模式之設計模式之PROTOTYPEPROTOTYPE - -原始模型模式原始模型模式lpublic abstract class Abstract

10、Spoon implements Cloneable String spoonName; public void setSpoonName(String spoonName) this.spoonName = spoonName;public String getSpoonName() return this.spoonName;public Object clone() Object object = null;try object = super.clone(); catch (CloneNotSupportedException exception) System.err.println

11、(“AbstractSpoon is not Cloneable“);return object; lpublic class SoupSpoon extends AbstractSpoon public SoupSpoon()setSpoonName(“Soup Spoon“); public class SaladSpoon extends AbstractSpoon public SaladSpoon()setSpoonName(“Salad Spoon“); l 设计模式之Singleton -单例模式l单例模式确保某一个类只有一个实例,而 且自行实例化并向整个系统提供这个实例 单例模

12、式。l单例模式只应在有真正的“单一实例”的需求 时才可使用。设计模式之Singleton -单例模式l俺有6个漂亮的老婆,她们的老公都是我, 我就是我们家里的老公Sigleton,她们只要 说道“老公”,都是指的同一个人,那就是我 (刚才做了个梦啦,哪有这么好的事) 设计模式之Singleton -单例模式lpublic class Singleton l private static Singleton instance = null;public static synchronized Singleton getInstance() /这个方法比上面有所改进,不用每次都进行生成对 象,只是

13、第一次 /使用时生成实例,提高了效率!if (instance=null)instancenew Singleton();return instance; l l 結構模式結構模式設計模式之設計模式之AdapterAdapter -适配器l把一个类的接口变换成客户端所期待的另 一种接口,从而使原本因接口原因不匹配 而无法一起工作的两个类能够一起工作。 适配类可以根据参数返还一个合适的实例 给客户端。設計模式之設計模式之AdapterAdapter -适配器l在朋友聚会上碰到了一个美女Sarah,从香 港来的,可我不会说粤语,她不会说普通 话,只好求助于我的朋友kent了,他作为我 和Sarah

14、之间的Adapter,让我和Sarah可以 相互交谈了(也不知道他会不会耍我) 設計模式之設計模式之AdapterAdapter -适配器lpublic interface IRoundPegpublic void insertIntoHole(String msg);lpublic interface ISquarePegpublic void insert(String str);llpublic class PegAdapter implements IRoundPeg,ISquarePegprivate RoundPeg roundPeg;private SquarePeg squar

15、ePeg;/ 構造方法public PegAdapter(RoundPeg peg)this.roundPeg=peg;/ 構造方法public PegAdapter(SquarePeg peg)(this.squarePeg=peg;)l public void insert(String str) roundPeg.insertIntoHole(str);l public void insertIntoHole(String str)SquarePeg.insert(str);l設計模式之設計模式之BridgeBridge -桥梁模式l将抽象化与实现化脱耦,使得二者可以独 立的变化,也就是说将他们之间的强关联 变成弱关联,也就是指在一个软件系统的 抽象化和实现化之间使用组合/聚合关系而 不是继承关系,从而使两者可以独立的变 化。設計模式之設計模式之BridgeBridge -桥梁模式l早上碰到MM,要说早上好,晚上碰到MM ,要说晚上好;碰到MM穿了件新衣服,要 说你的衣服好漂亮哦,碰到MM新做的发型 ,要说你的头发好漂亮哦。l不要问我“早上碰到MM新做了个发型怎么 说”这种问题,自己用BRIDGE组合一下不 就行了 設計模式之設計模式之BridgeBridge -桥梁模式lpublic abstract class Coffee Coff

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号