设计模式——抽象工厂 [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
相关文档:
serialVersionUID作用:
序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
有两种生成方式:
一个是默认的1L,比如:private static final long serialVersionUID = 1L;
一个是根据类名、接口名、成员方 ......
简单的说:
AWT 是抽象窗口组件工具包,是 java 最早的用于编写图形节目应用程序的开发包。
Swing 是为了解决 AWT 存在的问题而新开发的包,它以 AWT 为基础的。
具体的说就是:
AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供 ......
不需要生成dtd,无用配置,不需要生成辅助类,速度快。这就是xstream+xpp超强黄金组合。
xstream大家都知道啦,XML Pull Parser是一种高速的 解析xml文件的方式,速度要比传统方式快很多(发现pull式解析现在比较流行了)。下面我给出多种使用方法的例子。
1.最简单的使用方法
因为这个太简单,所以我从moogle的blog http: ......
1 基本介绍
可以说CSV格式的文件经常碰到,何为CSV格式,CVS全称comma-separated values,就是典型的用逗号隔开的文件,比如下面这种文件格式
Name,company
zhangsan,ibm
lisi,oracle
这种就是典型的CSV格式文件。不过也可以扩展到其它符号隔开的字符,比如
Name#company
Zhangsan#ibm ......
很多网友咨询学习Java有没有什么捷径,我说“无他,唯手熟尔”。但是尚学堂愿意将一些经验写出来,以便后来者少走弯路,帮助别人是最大的快乐嘛!
要想学好Java,首先要知道Java的大致分类。我们知道,自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE, ......