
设计模式
yuanzeyao
有少量资深Android开发岗位,欢迎投简历(注:需要金融背景,有效期:2024-04-30)
展开
-
装饰模式
装饰者模式 Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。 意图: 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 设计原则: 1. 多用组合,少用继承。 利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。转载 2012-04-10 10:47:31 · 1230 阅读 · 0 评论 -
设计模式之Bridge
Bridge设计模式是一个非常有用的设计模式,也是比较复杂的设计模式,比较符合java中面向接口编程的思想,Bridge设计模式的主要作用就是将抽象和实现部分实现解耦。 为什么叫桥接模式,我的理解就是将抽象这部分放置到桥的一头,将实现部分放置到桥的另一头,任何一头发生什么改变,都不会影响另一边,其实在JDBC中就是采用了Bridge的思想,jdbc是sun公司定义的一套接口,不同的数据库公司分别原创 2012-08-01 18:13:44 · 1511 阅读 · 1 评论 -
设计模式之原型模式
原型设计模式主要使用场景: 1、类初始化需要消耗非常多的资源 2、通过new 产生一个对象需要非常繁琐的数据准备或者访问权限, 下面就使用发送广告邮件为例说明原型设计模式的使用。 当发送广告邮件时,邮件中除了称呼和接受地址会变之外,其他都是一样的,所以我们可以将不变的地方抽取出来作为一个模版(AdvTemplate),然后定义一个邮件类,编写一个构造方法,参数就是上面的模板,根据模板原创 2012-08-06 13:31:40 · 1568 阅读 · 0 评论 -
设计模式之享元模式
享元模式的目标是共享内存中的轻量级的对象,从而减少在内存中创建相同的对象,现在用一个牛排咖啡店来说明享元模式的原理: 现在有一个牛排咖啡店,里面有各种风味的牛排(Flavor),现在我们想用享元设计模式来实现这个牛排销售系统 先将代码奉上: public interface Order { //将牛排卖给客人 public void sell(); //返回牛排的名字 pu原创 2012-08-06 11:12:50 · 2943 阅读 · 0 评论 -
设计模式之模板方法模式
模板方法模式是设计模式中比较常用的设计模式之一,也是一个比较简单的设计模式,如Servlet,Filter都使用了模版方法模式,Filter中又三个方法,init(),doFilter(),destroy(),他们的执行循序是依次执行,这就是模版方法的典型应用。 下面用启动一个汽车来说明一下模板设计模式,在开车的过程中,包括启动汽车,喇叭,停止汽车,这三个顺序是不能改变的,那么如何控制他们的顺序原创 2012-08-05 15:59:17 · 1386 阅读 · 0 评论 -
设计模式之门面模式
门面模式,就是将一些复杂的小系统整合起来,为用户的使用提供一个简单的接口,统一一个高层接口给用户使用,打个比方,电视的按钮就是一个门面模式,因为我们换台只需要拧按钮,而不必关心电视机里面经历了哪些过程。 现在我用一个邮局递信的例子来说明问题: 我现在定义的邮局和现实中的邮局有些差别,假设有这样一个邮局,当我们想发信时,我们只需要提供信的内容和地址,其他的都由邮局来做。 那么先定义写信流程的接原创 2012-08-02 17:23:36 · 2192 阅读 · 1 评论 -
组合模式
组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 什么时候使用? 需求中是体现部分与整体层次的结构,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑使用组合模式了。 类图如下: 由于用的比较少,所以画的比较丑(呵呵) 现在使原创 2012-05-14 10:17:47 · 1344 阅读 · 0 评论 -
命令模式
在软件系统中,行为的请求者和行为的执行者通常是一种"紧耦合",命令模式的产生就是为了实现他们之间的"松耦合" 在命令模式中,通常包含以下几种角色: 1、ICommond: 定义命令的接口,声明命令的方法。 2、Commond 定义具体的命令,里面通常会包含一个执行者 3、Receiver 行为的执行者 4、Invoker 行为请求者,通常包含一个命令对象,也可包括多个命令对象,使原创 2012-05-14 09:33:27 · 1302 阅读 · 0 评论 -
适配器模式
所谓适配器模式,就是用户将一个已经存在的接口适配成用户所期待的接口,一个适配器通常允许因接口不兼容的类协同工作 适配器有两种实现方式: 基于类的实现方式(机场) 基于对象的实现方式(组合) 适配器的角色构成: a 目标抽象角色Target ---定义客户要用的特定方法 b 适配器adapter ---调用另一个接口,作为一个转换器 c 适配器adaptee ---使用adap原创 2012-05-13 18:01:52 · 1224 阅读 · 0 评论 -
责任链模式
责任链,如同名字一样,一条链子,是有一环套一环的,没一个环就相当于一个处理器,处理完后交给下一个处理器处理,只到所有的处理器都处理完,如果我们有过web开发经验的人,看到这个比如就会联想到Filter和interceptor这两个概念,就是过滤器和拦截器,现在我们将模拟过滤器来讲解责任模式, 1、写一个Filter接口(这个接口是我自定义的,并非Servlet中的那个Filter) publi原创 2012-04-11 14:11:30 · 1546 阅读 · 0 评论 -
策略模式
策略模式的角色 抽象策略角色具体策略角色环境角色 在jdk中,Comparator就是一种典型的策略模式,其中,Comparator就是抽象的策略角色,自定义一个类并实现Comparator就叫做具体策略角色,使用自定义的类对TreeSet进行排序,那么这个TreeSet就是环境角色 例:有一个Person类,放在一个列表中,要分别按id升序和降序排列,要求使用策略模式 1原创 2012-04-10 14:11:33 · 1141 阅读 · 0 评论 -
代理模式
所谓代理模式,就是给某一对象提供代理对象,并由代理对象控制具体对象的应用 代理模式设计的角色: 1、抽象角色:声明了代理主题和真实主题的公共接口,使任何需要真实主题的地方都能用代理主题代替 2、代理角色:含有真实主题的引用,从而可以在任何时候操作真实主题,代理主题功过提供和真实主题相同的接口,使它可以随时代替真实主题.代理主题通过持有真实主题的引用,不但可以控制真实主题的创建或删除,可原创 2012-04-09 19:32:17 · 1333 阅读 · 0 评论 -
Iterator设计模式
Iteraotr设计模式是在集合中使用的非常多的一种模式,Iterator为我们提供了统一的遍历集合的方法,不管该种集合的底层是用数组还是链表实现。现在使用Iterator这种设计模式设计自己的集合类型,为了大家方便理解,现将我自定义的集合名和jdk中提供的集合名保持一致。 下面来写一个简单的Iterator设计模式的例子 1、定义Iterator接口(注意是自定义的,而非jdk自带的) p原创 2012-04-09 23:08:51 · 1224 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式主要是用来生成具有相同接口的类 工厂模式主要包括: 1、简单工厂 2、工厂方法 3、抽象工厂 我们首先来学习一下简单工厂的原理: 学习背景: 我需要这样一个智能程序,我对它讲话,它能够为我制造一台能够满足我需求的电器 如:我要看电视,它给我制造一台电视,我要洗衣服,它给我制造一台洗衣机... 首先我使用面向过程的方法来实现这个程序 public sta原创 2014-05-17 13:02:18 · 2952 阅读 · 1 评论