java设计模式之创建型模式-简单工厂模式
来源:互联网 发布:软件测试结论 编辑:程序博客网 时间:2024/04/25 19:50
简单工厂设计模式
概念
简单工厂模式又称静态工厂方法模式.
实质是“工厂方法模式的一个特例,定义了一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行."
适用性
下列情况可以考虑使用工厂方法模式:
创建对象需要大量重复的代码。
创建对象需要访问某些信息,而这些信息不应该包含在复合类中。
创建对象的生命周期必须集中管理,以保证在整个程序中具有一致的行为。
UML
例子
一个汽车接口类,包含启动和停止两个方法:
public interface Car {
public void run();
public void stop();
}
現在要生产三辆车,它们都实现接口Car里的run和stop方法,并有自己的行为特征,这里为了简单就各打印一句话.
奔驰:
public class Benz implements Car {
@Override
public void run() {
System.out.println("Benz 奔驰启动了...");
}
@Override
public void stop() {
System.out.println("Benzͣ 奔驰停止了...");
}
}
福特:
public class Ford implements Car {
@Override
public void run() {
System.out.println("Ford 福特启动了...");
}
@Override
public void stop() {
System.out.println("Fordͣ 福特停止了...");
}
}
丰田:
public class Toyota implements Car {
@Override
public void run() {
System.out.println("Toyota 丰田启动了...");
}
@Override
public void stop() {
System.out.println("Toyotaͣ 丰田停止了...");
}
}
虽然说要生产三辆汽车,但是没有汽车工厂怎么生产呢?对,现在需要一个生产汽车的工厂类:
public class CarFactory {
public static Car newCarInstance(String type)
throws InstantiationException, IllegalAccessException, ClassNotFoundException {
// 使用反射得到具体的实现类
// 实现工厂和具体实现类分离,只需添加具体实现类即可,无需改动工厂类
return (Car) Class.forName(type).newInstance();
}
}
我们看到这个生产汽车的工厂类实例化对象是通过反射机制实现的,并根据参数的不同选择实现不同的具体对象,这有什么好处呢?
好处就是,我们如果要生产一辆宝马的话,就只要创建一个宝马的实体类并实现接口Car即可.
这个工厂类不需要由每个具体产品实现一个自己的具体的工厂类(工厂方法模式需要此步骤),所以可以将工厂方法设置为静态方法。 而且,工厂方法封装了对象的创建过程。
其实上面的代码应该还要添加一个私有的构造方法.
下面贴测试代码:
@Test
public void test3() throws Exception {
Car c = CarFactory.newCarInstance("Toyota");
if (c != null) {
c.run();
c.stop();
} else {
System.out.println("没有对应车型...");
}
}
输出:
0 0
- java设计模式之创建型模式-简单工厂模式
- java设计模式(创建型)之简单工厂模式
- java 设计模式-创建模式之简单工厂模式
- java设计模式 -------- 创建模式 之 简单工厂模式
- "围观"设计模式(8)--创建型之简单工厂模式、工厂方法模式、抽象工厂模式
- "围观"设计模式(8)--创建型之简单工厂模式、工厂方法模式、抽象工厂模式
- java设计模式之创建型模式-工厂方法模式
- java设计模式之创建型模式-抽象工厂模式
- JAVA设计模式之工厂模式之简单工厂模式
- 创建型设计模式:简单工厂模式
- 创建型设计模式-简单工厂模式
- 设计模式之简单工厂(创建型模式)
- 创建型设计模式之简单工厂模式SimpleFactory
- 设计模式-创建型之简单工厂模式
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- C++ 内存
- SystemServer分析过程
- bootstrap 入门
- java实现动态切换上网IP (ADSL拨号上网)
- PAT (Advanced Level) Practise 1084 Broken Keyboard (20)
- java设计模式之创建型模式-简单工厂模式
- 设置代理
- Selenium RC服务器命令行参数列表
- 3.Java Networking: ServerSocket--java网络:服务端Socket
- 在 Eclipse 下利用 gradle 构建系统
- 关于mybatis扩展的一点想法
- 详解cookie
- 使用eclipse开发Android时,打开layout文件闪退
- Java基础------知识点整理(一)