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){
相关文档:
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) 编译期常数,它永远不会改变
(2) 在运行期初始化的一个值,我们不希望它发生变化
对
于编译期的常数,编译器(程序)可将常数值“封装”到需要的计算过程里。也就是说,计算可在编译期间提前执行, ......
定义:
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。
还有, singleton能够被状态化;
这样,多个单态类在一起就可以作为一个状态仓库一样向外提供服务,比如,你要论坛中的帖子计数器,每次浏览一次需要计数,单态类能否 ......
第一,谈谈final, finally, finalize的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖 ......
1.声明数组引用变量时不能指定数组的长度。如:int x[1];这句话非法。
2.数组对象的创建,例如:
int [] scores = new int[100];
首先在堆中分配内存空间,上述的就是400个字节,然后就给其赋默认值,各个数据类型的默认值不同,int为0.
3.返回数组对象的引用:
int [] x =new int [10]; <=> int size = 10; i ......