一 简单工厂模式
来源:互联网 发布:2015nba西部决赛数据 编辑:程序博客网 时间:2024/04/25 18:53
简单工厂模式
定义:又叫做静态工厂方法模式,通过定义专门一个类来负责创建
其他类的实例,而被创建的其他类实例一般具有共同的父类。
角色:分别为:工厂角色、抽象角色和具体实例角色。
通过对每个类实例的抽象,抽象出共同的父类(通常以接口的形式创建),作为抽象角色。然后再工厂角色中,根据传递的参数,创建具体类实例。
下面以具体的代码进行讲解:
首先来看下具体类:
例如:
public class Apple{ public void get(){ System.out.println("Apple"); }}public class Banana{ public void get(){ System.out.println("Banana"); }}
上面定义了两个具体类分为苹果类和香蕉类。可以看到他们都有get方法,因此可以定义一个水果接口类,作为抽象角色。
类如:
public interface Fruit { public void get();}
下面修改下上面的具体类,使他们实现该抽象接口。
public class Apple implements Fruit{ public void get(){ System.out.println("Apple"); }}public class Banana implements Fruit{ public void get(){ System.out.println("Banana"); }}
现在已经有了抽象角色和具体实例角色,还差工厂角色。那该如何创建工厂角色呢。请看下面的代码:
public class FruitFactory { public static Fruit getFruit(String type) throws InstantiationException, IllegalAccessException { if(type.equalsIgnoreCase("apple")) { return Apple.class.newInstance(); } else if(type.equalsIgnoreCase("banana")) { return Banana.class.newInstance(); } else { System.out.println("找不到相应的实例化类"); return null; } }}
那么,该如何调用呢,请看代码:
public class Test { public static void main(String[] args) throws InstantiationException, IllegalAccessException { Fruit apple = FruitFactory.getFruit("Apple"); Fruit banana = FruitFactory.getFruit("Banana"); apple.get(); banana.get(); }}
上面介绍了简单工厂模式。但是工厂角色中创建实例的代码比较繁琐,我们可以更改为更为简单的方式,如下:
public class FruitFactory { public static Fruit getFruit(String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException { Class fruit = Class.forName(type); return (Fruit) fruit.newInstance(); }}
上面的代码虽然简洁,但是要注意调用的时候,参数要与具体类名一致。
0 0
- 一、简单工厂模式
- 一 简单工厂模式
- 一、简单工厂模式
- (一)简单工厂模式
- (一)简单工厂模式
- 一 简单工厂模式
- 一、简单工厂模式
- 一、简单工厂模式
- 一、简单工厂模式
- 简单工厂模式(一)
- 工厂模式(一)--简单工厂模式
- 工厂设计模式一 简单工厂模式
- 模式一(简单工厂)
- 简单工厂模式(一)
- (一)简单工厂模式
- 设计模式一 简单工厂
- 简单工厂模式(一)
- (一)简单工厂模式
- 让你的MacBook不需要插件就能支持NTFS读写
- Spring MVC 解决 Could not write JSON: No serializer found for class java.lang.Object
- java小技巧之TabelModel;文件选择器;时间属性设置
- 定制EditText的样式
- MD5Helper
- 一 简单工厂模式
- 用深搜和广搜两种方法解题---黑色格子
- BZOJ 1483|HNOI 2009|梦幻布丁|Set
- 一个菜鸡之路
- iOS开发系列—Objective-C之内存管理
- 什么叫嵌入式系统?它的特点是什么?
- Oracle查看用户默认表空间使用情以及手动扩展表空间sql语句
- joker,我眼中的世界
- Haproxy Tornado笔记