易截截图软件、单文件、免安装、纯绿色、仅160KB

设计模式——抽象工厂 [java]

版权所有,转载注明出处!
转载请携带此信息:huangfox
-----------------------------------------------------------------
抽象工厂和工厂方法 刚开始很容易混淆,至少我是这样的!
不过他们产生的缘由来看,还是可以好好区分的。
1.工厂方法:是为了避免应用直接实例类层次结构中的具体类,提供一个方法根据运行情况实例一个合适的对象(父类类型)给应用层使用。
参考:http://blog.csdn.net/fox009/archive/2010/04/08/5465009.aspx
2.抽象工厂:同样是为了避免应用直接实例类层次结构中的具体类,但是它提供的是一个工厂接口(抽象类),具体的工厂都会实施这个接口,而产生一些对象的类。
总觉得描述这些东西比较拗口,不过看看实例结合自己的理解,应该也会有一个自己的理解和定义。
实例:
1.这是一个有关娱乐的实例,
娱乐的方式分为:音乐 、 电影
娱乐的资源获取方式:本地资源 、 网络资源
需求:用户并不知道底层的类结构,但是只要知道两个指令(娱乐方式、资源获取方式)就可以进行happy。[简单需求]
--uml
代码:
--首先是“音乐”的类层次
package com.fox.atstractFactory2;
/**
* @author huangfox
* 听音乐的接口
*/
public interface Music {
//通过歌名播放歌曲。
public void getMusic(String name);
}

--本地音乐
package com.fox.atstractFactory2;
/**
* @author huangfox
* 本地资源(歌曲)
*/
public class LocalMusic implements Music {
@Override
public void getMusic(String name) {
// TODO Auto-generated method stub
System.out.println("播放本地歌曲:" + name);
System.out.println("啦啦啦啦......");
}

}

--网络音乐
package com.fox.atstractFactory2;
import java.util.Random;
/**
* @author huangfox
* 网络资源(歌曲)
*/
public class NetworkMusic implements Music {
@Override
public void getMusic(String name) {
// TODO Auto-generated method stub
System.out.println("查询网络资源:" + name);
//模拟是否获得资源
int i = new Random().nextInt(2);
if(i%2 == 1){
System.out.println("获得资源:" + name);
System.out.println("啦啦啦啦......");
}else{
System.out.println("查询网络资源&quo


相关文档:

一个Java程序员应该掌握的10项技能

1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。
2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、 HtmlConverter、jar、 java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令 ......

java面试题

经过长时间的面试,以下是JAVA面试的常见的笔试题的整理。
1、String和StringBuffer的区别
     JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操纵字符串,即包含多个字符的字符数据。
String类提供了数值不可变的字符串。StringBuffer类提供的字符串进行修改。当知道字符数据要改变 ......

Java 操作文本 封装类

package com.sidi.card.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
 * 用于对文本的操作
 *
  ......

Java面试题和答案


 
Java面试题(答案)
第一,谈谈final, finally, finalize的差别。
final?修饰符(关键字)如果一个类被声明为final,意味着他不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,能确保他们在使用中不被改动。被声明为final的变 ......

如何自学java成为java高手

很多网友咨询学习Java有没有什么捷径,我说“无他,唯手熟尔”。但是尚学堂愿意将一些经验写出来,以便后来者少走弯路,帮助别人是最大的快乐嘛!
要想学好Java,首先要知道Java的大致分类。我们知道,自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE, ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号