您的位置:首页 > 编程语言 > Java开发

java工厂设计模式小例子

2014-05-15 07:25 211 查看
工厂设计模式模版:

//抽象产品类

public abstract class Product{

//产品类的公共方法

public void method1(){

//业务逻辑处理

}

//抽象方法

public abstract void method2();

}

//两个具体的产品类ConcretProduct1, ConcretProduct2

public class ConcretProduct1 extends Product{

public abstract void method2(){

//业务逻辑处理

}

}

public class ConcretProduct2 extends Product{

public abstract void method2(){

//业务逻辑处理

}

}

//抽象工厂类

public abstract class Creator{

/*

*创建一个产品对象,其输入参数类型可以自行设置

*通常为String、Enum、Class,当然也可以为空

*/

public abstract <T extends Product> T createProduct(Class<T> c);

}

//具体的工厂类

public class ConcreteCreator extens Creator{

/*

*创建一个产品对象,其输入参数类型可以自行设置

*通常为String、Enum、Class,当然也可以为空

*/

public <T extends Product> T createProduct(Class<T> c){

Product product = null;

try{

product = (Product)Class.forName(c.getName()).newInstance();

}catch(Exception e){

//异常处理

}

return (T)product;

}

}

下面是一段工厂设计模式的demo,代码来自李兴华老师的Java开发实战经典603页

interface Fruit{

public void eat();

}

class Apple implements Fruit{

public void eat(){

System.out.println("**吃苹果");

}

}

class Orange implements Fruit{

public void eat(){

System.out.println("**吃橘子");

}

}

class Factory{

public static Fruit getInstance(String className){

Fruit fruit = null;

try{

fruit = (Fruit)Class.forName(className).newInstance();

}catch(Exception e){

e.printStackTrace();

}

return fruit;

}

}

public class FactoryDemo{

public static void main(String[] args){

Fruit fruit = Factory.getInstance("Apple");

if(fruit != null){

fruit.eat();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: