- 浏览: 752301 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (241)
- 个人思考 (1)
- 数据库 (5)
- java基础 (32)
- 软件工程 (2)
- zk开源框架 (15)
- 设计模式 (25)
- javascript (12)
- css (9)
- UML (2)
- CMMI软件需求 (3)
- CMMI软件设计 (2)
- CMMI软件实现 (1)
- CMMI软件测试 (1)
- 正则表达式 (4)
- 系统日志配置 (4)
- 应用服务器 (1)
- spring (7)
- XML (6)
- java web (10)
- Ajax (3)
- RichFaces (14)
- 问题 (1)
- 评论文章 (2)
- fushioncharts (2)
- MAVN (4)
- jquery (26)
- Ext js学习 (2)
- 学习心得 (2)
- CSS兼容问题 (3)
- XSL-FOP (1)
- Quartz (0)
- OSGI (1)
- spring--security (6)
- apache tools (1)
- eclispe 小技巧 (2)
- Ant (1)
- 杂记 (1)
- spring3系列 (5)
- java cache (4)
- EffectiveJava (2)
- 代码重构 (0)
最新评论
-
psz6696:
可以说是超级简单的Demo了,可惜没有演示设值注入和构造注入两 ...
模拟spring中的ClassPathXmlApplicationContext类的实现 -
ziyourJava:
[flash=200,200][img][url][list] ...
spring security进级篇 V 自定义标签控制显示 -
ztw1122:
...
zk组件开发指南(目录) -
zjysuv:
容我说一句 在座的各位都是垃圾 spring 3.2以后的@C ...
三. spring mvc 异常统一处理 -
chengwu1201:
二 基于Spring的异常体系处理
最近,一直在看设计模式,感觉简单工厂模式、代理模式、策略模式、依赖注入在实现方式上简直是大同小异。有些可能侧重点不同。下面通过代码比较下他们之间的区别,pk下。
1、定义个接口
package com.cvicse.Ifruit; /** * 水果接口 * */ public interface Fruit { /** * 水果生长 */ public void grow(); /** * 吃水果 */ public void eat(); }
2、定义该接口的实现类
package com.cvicse.fruitImpl; import com.cvicse.Ifruit.Fruit; public class Apple implements Fruit { public void eat() { System.out.println("吃苹果!"); } public void grow() { System.out.println("苹果在生长!"); } } package com.cvicse.fruitImpl; import com.cvicse.Ifruit.Fruit; public class Orange implements Fruit { public void eat() { System.out.println("吃橘子!"); } public void grow() { System.out.println("橘子在生长!"); } }
3、定义最关键的部分,仔细观察他们的区别
工厂方法类
package com.cvicse.factory; import com.cvicse.Ifruit.Fruit; import com.cvicse.fruitImpl.Apple; import com.cvicse.fruitImpl.Orange; /** * 静态工厂类 */ public class FruitFactory { // 采用类的反射机制获取类的实例 public static Fruit fruitFactory(Class clazz) { Fruit fruit = null; try { fruit = (Fruit) Class.forName(clazz.getName()).newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return fruit; } /** * 正宗静态方法 * * @param type * @return */ public static Fruit fruitFactory(String type) { Fruit fruit = null; if ("apple".equals(type)) { fruit = new Apple(); } else if ("orange".equals(type)) { fruit = new Orange(); } return fruit; } }
代理模式类
package com.cvicse.factory; import com.cvicse.Ifruit.Fruit; import com.cvicse.fruitImpl.Apple; /** * 代理模式实现类 * */ public class FruitProxy implements Fruit { private Fruit fruit; public FruitProxy() { this.fruit = new Apple(); } public FruitProxy(Fruit fruit) { this.fruit = fruit; } public void eat() { fruit.eat(); } public void grow() { fruit.grow(); } }
策略模式类
package com.cvicse.factory; import com.cvicse.Ifruit.Fruit; /** *策略模式实现 */ public class StrategyContext { private Fruit fruit; public StrategyContext(Fruit fruit) { this.fruit = fruit; } public void eat() { fruit.eat(); } public void grow() { fruit.grow(); } }
策略模式和工厂模式结合
package com.cvicse.factory; import com.cvicse.Ifruit.Fruit; import com.cvicse.fruitImpl.Apple; import com.cvicse.fruitImpl.Orange; public class StrategyFacoty { private Fruit fruit; public StrategyFacoty(String type) { if ("apple".equals(type)) { this.fruit = new Apple(); } else if ("orange".equals(type)) { this.fruit = new Orange(); } } public void eat() { fruit.eat(); } public void grow() { fruit.grow(); } }
总结:在实现上他们很相似,但有条原则是趋向遵从的就是组合优先,继承随后。
- design.rar (7.6 KB)
- 下载次数: 13
发表评论
-
面向对象设计原则-------总结
2015-07-14 10:55 0单一职能原则 ----- 设计类时,尽量功能单一,粒度合 ... -
MVC设计模式理解
2009-11-16 22:11 2041常常说MVC设计模式,今天抽空整理下,感觉模式这东 ... -
面向对象设计的原则---------迪米特原则
2009-10-15 21:15 3131迪米特原则(Law of Demeter) 1、迪米特原则的 ... -
面向对象设计的原则------接口隔离原则
2009-10-12 15:50 2758接口隔离原则(Interface ... -
面向对象设计的原则------依赖倒置原则
2009-10-11 18:27 3589依赖倒置原则(Dependence Inversion Pri ... -
面向对象设计的原则------里氏代换原则
2009-10-11 14:21 2603里氏代换原则(Liskov Sub ... -
面向对象设计的原则------开闭原则
2009-10-10 23:09 2437开闭原则(Open-Closed Prin ... -
面向对象设计的原则------单一职责原则
2009-10-09 20:36 3240学习设计模式,自然会涉及面向对象的设计原则,面向对 ... -
观察者模式
2009-08-04 22:14 1145gaojie -
组合模式-------树形模式
2009-08-03 20:42 22141、组合模式定义 ... -
命令模式
2009-08-02 14:06 18091、Commad模式是一种对象行为模式,它可以对发送者(se ... -
适配器和外观模式的区别
2009-08-01 18:23 1356ok -
适配器模式
2009-08-01 14:43 1157适配器模式通俗的说是将两个联系不密切的类或类与接口通过另一个类 ... -
门面模式(外观模式)
2009-07-29 22:49 14431、外观模式 为子系统的一组接口提供一个一致的界 ... -
策略模式
2009-07-19 23:01 1320今天学习策略模式。策略模式是这个样子的。定义一个接 ... -
jdbcTemplate分页封装
2009-07-16 09:17 41071.JdbcTemplateExtend.java publi ... -
单例模式完全剖析
2009-07-07 21:01 1305概要 单例模式是最简单的设计模式之一,但是对于Jav ... -
DAO设计模式
2009-07-04 11:40 2200虽然DAO模式已经有了好多的成熟的框架,但它仍然是 ... -
工厂模式与DAO模式
2009-07-02 21:17 4380工厂模式是设计模式中较简单的模式,但在项目的开发过 ... -
动态代理模式
2009-06-30 22:25 14812.动态代理类 Java动态代理类位于Ja ...
相关推荐
工厂模式和抽象工厂模式的对比,俩者的一些区别和相似
1)找哪些基因在哪些条件下具有相似模式。即找出哪些行的数据在哪些列上具有相似的模式(相似的行和列有一定的限制,不能太小),并图形化你的结果。 2) 找具有相反表达模式的基因,即找出哪些行在哪些列上具有相反...
提出涨落模式(FP)的概念,以涨落模式保存原序列的趋势变化信息,利用最长公共子序列算法计算涨落模式的相似度,消除振幅伸缩、振幅漂移和线性漂移等对相似性挖掘带来的影响,实现基于涨落模式的时间序列相似性度量...
创建型模式,共五种:单例模式、原型模式、工厂方法模式、抽象工厂模式、建造者模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、...
(1)原型模式。当需要大量相同或相似的对象时,原型模式是最佳选择。原型模式通过在内存中复制对象,比直接创建新对象更...在本系统中,抽象工厂模式的实现涉及到可乐生产工厂类、百事可乐类、可口可乐类等。 (4)
说明:顾名思义就是用一个类来代替另一个类来执行方法功能,这个模式跟装饰模式有点相似,不一样的是,代理模式是代替客户初始化被代理对象类,而装饰模式采用接口或初装饰者参数引用的方式来执行的。 解释:房屋...
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的...
java设计模式之工厂方法模式 学习设计模式已经有一段时间了,但经常还是会很困惑。看书上的代码会发现很多不同的设计模式的代码结构非常相似。比如 Bridge 和 Strategy 。。。 设计模式就是我们设计过程中经常出现的...
通过使用抽象工厂模式,可以处理具有相同(或者相似)等级结构中的多个产品族中的产品对象的创建问题。如下图所示: 根据产品角色的结构图,就不难给出工厂角色的结构设计图。 可以看出,每一个工厂角色都有两个工厂...
众所周知,从结构可以看出,简单工厂模式中的工厂依赖于所有的子类产品,客户只需知道父类产品和工厂即可。工厂是整个模式的核心,以不变应万变。它虽然使对象的创建与使用进行了分离,但一次只能创建一个对象。它...
针对交通流时间序列具有高维、高噪声的特性,设计了基于趋势变动、拟合...以上海南北高架东侧间部分路段固定线圈检测数据为例进行了实证分析,最终确定模式距离与欧氏距离组合方式为交通时序模式相似性度量的最佳方法。
模糊模式识别的基础——相似度量.pdf 模糊模式识别的基础——相似度量.pdf
为挖掘桥梁检测各测点之间的相似关系,提出基于模式形态距离的时间序列相似性度量方法。该方法首先根据监测时间序列的形态特征将序列划分成若干模式,然后以各模式形态的动态变化趋势差异为依据进行相似性的判别,并...
模式概述 策略模式(Strategy Pattern)在外形上与状态模式很相似,但在意图上有些不同。其意图是使这些算法可以相互替换,并提供一种方法来选择最合适的算法。
主要介绍了Java设计模式编程中的状态模式和策略模式对比,文中列举了两种模式的相似点和不同点,并都举了代码的实例作为参照,需要的朋友可以参考下
计算机程序设计艺术1网络信息审计系统中的多模式相似匹配算法
现在该设计模式粉墨登场了,这种根据不同情况创建不同类型的方式,工厂模式是最拿手的。先看看我们 的工厂需要生产哪些产品呢?虽然这里有两种不同类型的媒体AudioMedia 和 VideoMedia(以后可能更 多),但它们同时...
java设计模式【之】适配器模式【源码】【场景:水和容器】 * 适配器模式,类似(亡羊补牢) * 已经存在的类(功能已经开发完成了),与新需求的功能相似,但是略有差异 * 当已经存在的方法无法满足现有需求,需要...
主扩展模式,通常用来将几个相似的对象的共有属性抽取出来,形成一个“公共属性表”;其余属性则分别形成“专有属性表”,且“公共属性表”与“专有属性表”都是“一对一”的关系