
设计模式
文章平均质量分 89
hailushijie
王海路-15911136758
展开
-
设计模式之依赖倒置设计原则
周末在看《深入理解Java虚拟机》,其中有关于Java虚拟机部分的描述,忽然来了灵感,感觉可以从这个角度来阐述 依赖倒置 设计原则。最初接触 依赖倒置,是在《HeadFirst设计模式》这本书中,此后,每当业务重构或者开始一个新项目,我都会先翻一翻这本书,常读常新,每次也都会有新的体悟。一、破题 - Java虚拟机规范和语言规范Java 在刚刚诞生之时曾经提出过一个非常著名的宣传口号:“一次编写,到处运行”。“与平台无关” 的理想最终实现在操作系统的应用层上:Sun公司以及其他虚拟机提供商发布了许多可原创 2021-01-03 13:22:47 · 396 阅读 · 0 评论 -
设计模式--装饰者模式--UML
装饰者模式:原创 2013-11-25 19:17:58 · 1610 阅读 · 0 评论 -
设计模式--工厂模式--UML
1、简单工厂模式2、工厂方法3、抽象工厂原创 2013-11-25 20:50:21 · 2206 阅读 · 0 评论 -
设计模式--命令模式--UML
命令模式:原创 2013-11-26 14:59:41 · 2572 阅读 · 0 评论 -
设计模式--适配器模式--UML
适配器模式:原创 2013-11-26 15:07:32 · 2130 阅读 · 0 评论 -
设计模式--模版方法--UML
模版方法:原创 2013-11-26 15:32:36 · 1017 阅读 · 0 评论 -
设计模式--外观模式--UML
外观模式:原创 2013-11-26 15:18:51 · 1589 阅读 · 0 评论 -
状态模式类图
状态模式:允许对象在内部改变时改变它的行为,对象看起来好像修改了它的类。类图:原创 2014-03-11 10:57:33 · 2484 阅读 · 0 评论 -
设计模式之备忘录模式
把备忘录备份的对象封装在Memento中,那一天需要更改保存的细节,可以做到不更改客户端。备忘录模式适用于功能比较复杂,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一部分时,Originator可以根据Memento中保存的信息还原到迁移状态。命令模式支持命令的撤销操作,命令模式也可以使用备忘录模式。原创 2014-03-13 12:56:02 · 1853 阅读 · 0 评论 -
设计模式之原型模式案例代码
原型模式:用原型实例指定对象的种类,并且通过拷贝这些原型创建新的对象。优点:基于原型创建新对象,新创建的对象不需要知道任何原型对象的细节。原创 2014-03-07 15:05:04 · 1664 阅读 · 0 评论 -
设计模式组合模式new
组合模式:允许你将对象组合成树形结构来表现 “整体/部分” 层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。组合模式解决了整体与部分一致对待的问题。透明方式:叶子结点和分支节点继承自同一父类,叶子和分支具有同一接口。优点:叶子结点和分支节点对外界没有区别可以统一接口调用,缺点:父类方法在叶子中实现无意义。安全方式:叶子接口不实现父类方法,这种方式接口带外界不透明,在使用时需原创 2014-03-14 11:04:40 · 1429 阅读 · 0 评论 -
Android源代码涉及的设计模式,持续更新
//更新装饰者模式原创 2014-06-10 12:18:24 · 896 阅读 · 0 评论 -
设计模式之观察者模式案例学习
观察者模式:顾名思义就是不太好让人明白。官方定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并更新。----HeadFirst设计模式案例代码下载案例:小花猫和猫头鹰以捉老鼠为生。现在有一个广播老鼠信息的主题。可小花狗也参合进来了。Observable.javapublic interface Observab原创 2013-02-26 23:45:47 · 1267 阅读 · 0 评论 -
设计模式--观察者模式--UML
观察者模式类图:原创 2013-11-25 19:00:37 · 4484 阅读 · 0 评论 -
设计模式--策略模式--UML图
策略模式:http://blog.youkuaiyun.com/droyon/article/details/8611418原创 2013-11-25 11:29:02 · 3987 阅读 · 0 评论 -
设计模式之装饰者模式案例学习
装饰者模式:顾名思义将对象装饰的更加漂亮,只是更漂亮,他还是他,没有改变类型。官方定义:动态的将责任附加到对象上。若要扩展功能,装饰着提供了比继承更有弹性的替代方案。案例情景:煎饼果子(pancake),包含一个鸡蛋、一个脆饼。我们可以选择加辣椒(pepper),可以选择加香肠(Sausage),可以选择多加鸡蛋(Eggs)。(上地软件园路上的煎饼果子,你懂的!)我们要实现对每一个原创 2013-03-03 00:58:42 · 1790 阅读 · 0 评论 -
抽象工厂模式学习案例代码
抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指明具体类。抽象工厂模式允许客户使用抽象的接口来创建一组相关的产品,而不需要知道实际产出的具体产品是什么。这样客户就从具体产品中解耦了。案例代码下载总结:抽象工程模式可以看成创建一组对象的工厂方法模式的集合。抽象工厂模式可用于对相同方案的替换。比如数据库整体方案的替换,数据库拥有一系列的操作,比如创建数据库,删除原创 2013-03-17 20:27:04 · 1822 阅读 · 0 评论 -
设计模式之组合模式java实现
组合模式:允许你将对象组合成树形结构来表现 “整体/部分” 层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。案例情景:上次,我和友人去超市分头购物,在结帐时,我们遍历一下我们的 “扫货” 清单(遍历打印购物清单),在实现上,Me使用ArrayList,友人使用Thing[]数组,给遍历造成困扰。在遍历时发现赠送的商品,没有打印。现在我们有打印赠送物品的需求。Abst原创 2013-04-18 00:36:17 · 1584 阅读 · 0 评论 -
设计模式学习笔记之命令模式
定义:将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式支持可撤销等操作。命令模式将发出请求的对象和执行请求的对象解耦。在被解耦的两者之间是通过命令对象进行沟通的。案例代码下载案例情景:开灯和关灯操作是电灯的基本操作。我们用命令模式模拟这种情景。Handler.javapublic class Handler { public static fi原创 2013-03-26 00:38:28 · 1927 阅读 · 0 评论 -
设计模式之单例模式
单例模式:确保一个类只有一个实例,并提供一个全局的访问点。在单例模式下,当需要返回单个实例时,通过单件类获取是唯一的途径。案例代码下载情景:小明家只有一辆车,车在某一个时刻,只有一个状态,要么前进,要么后退,也就是倒车。案例代码:在正规的单例模式中,单例类需要提供私有的构造方法,通过共有的全局访问点。在本测试代码中为了比较差异,对单例模式稍作改动。单例模式只允许原创 2013-03-25 01:08:05 · 1870 阅读 · 0 评论 -
设计模式之工厂方法模式
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。案例情景:在简单工厂中的那家买粥的生意非茶好,卖粥的招牌很响,他们想在开两家分店,把招牌租出去,允许分店对粥做改良,更新。两家分店的名字为CongeeStroeA,CongeeStroeB。CongeeStreA家的大米粥含有皮蛋瘦肉,CongeeStreB家的八宝粥里面还有银耳。我们原创 2013-03-17 18:05:46 · 1118 阅读 · 0 评论 -
策略模式学习案例
策略模式:顾名思义就是提供一系列策略,在不同的情形下可以选择不同的策略。官方定义:定义了算法簇,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。学习源代码下载案例:家庭的动物们要开音乐会,我们分几种不同的方案实现。最后使用策略模式实现。1、使用继承实现:Animal.javapublic class Animal { private原创 2013-02-25 23:33:26 · 2463 阅读 · 0 评论 -
设计模式之状态模式案例代码
状态模式:允许对象在内部改变时改变它的行为,对象看起来好像修改了它的类。将状态封装成为对立的类,并将动作委托给当前状态的对象。对象在运行过程中,会完全改变他的行为,好像另一个对象一样。案例情景:ATM机在我们的生活中随处可见,我们只需插入银行卡,输入密码,输入取款金额,取走现金。就ok了,方便了我们的生活。我们现在就来模拟这个过程,最后“拿钱走我”1、State.jav原创 2013-04-15 00:07:59 · 2626 阅读 · 0 评论 -
设计模式之简单工厂模式学习案例代码
简单工程模式:简单工厂并不是一个设计模式,它是一种变成习惯。案例分析:在去上地软件园的路上,有很多粥店。现在可能少了,也就一两家。他们卖的粥用纸杯装盛,你只需要告诉他们什么粥即可。他们那里有大米粥,小米粥,八宝粥。案例代码下载1、Congee.java//粥基类public class Congee { private String name; public Con原创 2013-03-17 08:31:03 · 1820 阅读 · 0 评论 -
设计模式之迭代器模式java实现代码
迭代器模式:提供一个方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。迭代器模式提供了一种方法,可以顺序访问一个聚合对象中的元素,而又不用知道内部是如何标示的。另外,迭代器模式把在元素之间游走的责任交给迭代器,而不是聚合对象,让聚合更专注于数据集合。案例实现情景:我和友人去超市分头购物,在结帐时,我们遍历一下我们的 “扫货” 清单(遍历打印购物清单),在实现上,Me使用Arra原创 2013-04-17 23:41:17 · 2261 阅读 · 0 评论 -
设计模式案例代码之外观模式
外观模式:提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更容易的使用。外观模式的作用是简化接口,将客户端从组件中解耦。适配器模式也处理接口,不过是转化接口。外观模式让我们的客户和子系统之间避免紧耦合。森林要召开音乐会,所有的动物都要参加。开幕式所有动物都要参与唱歌。每个动物唱歌的方法不一样,比如,小花猫唱歌的方法为quack,小狗唱歌的方法原创 2013-04-01 00:35:08 · 2044 阅读 · 0 评论 -
设计模式案例代码之适配器模式
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。这个模式可以让我们通过创建适配器进行接口转换,让不兼容的接口变成兼容。这个模式让客户端从实现中解耦。当你需要使用一个现有的类而其接口并不符合你的要求时,就使用适配器。适配器模式将对象包装起来,改变其接口。装饰着模式将一个对象包装起来,增加其新行为和责任。案例情景:四只小花猫参加唱原创 2013-03-31 23:59:25 · 2556 阅读 · 0 评论 -
设计模式之模板方法
模板方法:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法就是一个方法,将方法的实现设计成一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这可以保证算法的结构保持不变,同时由子类提供部分实现。案例情景:把老虎关进冰箱,总共分几步?三步,第一步把冰箱门打开,第二部把老虎塞进冰箱,第三部,把冰原创 2013-03-17 23:34:51 · 1169 阅读 · 0 评论 -
设计模式之责任链模式
定义:创建一个对象链,每个对象对请求依次检查,并对其处理,或者将它传给链中的下一个对象。应用;经常用在窗口系统中,处理点击事件等,如果点击事件在某个窗口对象上消耗了,那么此点击事件不再继续往下传送。责任链模式关键在于运用某种关系是对象之间形成链,这个关系可以是继承,也可以是组合。代码下载案例:在公司制度中,部门经理有权处理请假日期小于等于三天的事务,如果请假日期多余三天,那么需原创 2013-03-23 01:47:33 · 1250 阅读 · 0 评论