Java设计模式系列教程(一)工厂模式factory
今天和大家一起学习Java的设计模式。本人的水平不是很高,这系列文章只是自己学习的过程,并希望能同大家分享经验。
先说下我对工厂模式的理解:当我们需要某个对象时,最直接的办法是看到这个对象就拿过来。但是当对象非常多的时候,找起来就很不方便。这时就需要一个中介来帮助我们取得想要的东西,这个中介就是工厂(factory)。
工厂模式可分为三个分类(简单工厂模式Simple Factory、 工厂方法模式Factory Method、 抽象工厂模式Abstract Factory)
我来模拟一个场景:动物园管理员每天都要确保动物的健康,确定动物健康的一种简单方法就是听一听动物的叫声是不是正常。这样,管理员就需要随时找到任一种动物以确定动物的情况。下面是动物相关类(至于动物园为什么有猫和狗大家就不要太计较了……):
interface:Animal(动物的接口)
package com.captain.factory;
/**
* <P>Title:动物接口<p>
* @author 船长工作室
*/
public interface Animal {
void call();
}
class:Cat(猫)
package com.captain.factory;
/**
* <p>Title:猫<p>
* @author 船长工作室
*/
public class Cat implements Animal {
/**
* 猫叫
* @param 无
* @return void
*/
public void call() {
System.out.print("meow");
}
}
class:Dog(狗)
package com.captain.factory;
/**
* <p>Title:狗<p>
* @author 船长工作室
*/
public class Dog implements Animal {
/**
* 狗叫
* @param 无
* @return void
*/
public void call() {
System.out.print("bark");
}
}
class:Tiger(老虎)
package com.captain.factory;
/**
* <p>Title:老虎<p>
* @author 船长工作室
*/
public class Tiger implements Animal {
/**
* 老虎叫
* @param 无
* @return void
*/
public void call() {
System.out.print("roar");
}
}
下面先介绍简单工厂模式:
class:SimpleFactory(简单工厂)
package com.captain.factory;
/**
* <p>Title:简单工厂模式-工厂类<p>
* @author 船长工作室
*/
public class SimpleFactory {
/**
* 召唤动物
* @param s 召唤动物的种类
* @return animal 该种类的动物实例
*/
public static Animal search(String s){
相关文档:
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见。
本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后, ......
package com.eastpro.batch.biz;
//import javax.activation.*;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.internet.*;
import javax.mail.*;
import java.io.UnsupportedEncodingException;
import java.util.*;
/**
* Insert the type's descript ......
1.声明数组引用变量时不能指定数组的长度。如:int x[1];这句话非法。
2.数组对象的创建,例如:
int [] scores = new int[100];
首先在堆中分配内存空间,上述的就是400个字节,然后就给其赋默认值,各个数据类型的默认值不同,int为0.
3.返回数组对象的引用:
int [] x =new int [10]; <=> int size = 10; i ......
java的路径让许多人,特别是初学者感到迷惑,我这里再解释一下。我们分2个阶段,1是编译阶段,2是运行阶段。
一、编译阶段
这个时候,我们要提供给编译器的有2个路径参数,第一个是源代码在哪里?也就是 sourcepath,第二个就是依赖的类在哪里?也就是 classpath
我们看一个例子
d:\temp\TestCP\d1\p1\Clas ......
public boolean writeXML(String content, String filename)
{
String savepath;
FileOutputStream fout;
// log.info("content:"+content+ ......