简单工厂 模式
来源:互联网 发布:漫画制作软件手机版 编辑:程序博客网 时间:2024/05/22 05:40
功能:
简单工厂模式又称静态工厂模式,用来实例化目标类的静态类。
实例:
a、说明:
b、代码1
*******************************************************
package designPatterns.factorydemo.simplefactory;
//车类型
interface Car{
public void run();;
public void stop();;
}
//第一种车
class Benz implements Car{
public void run(){
System.out.println("奔驰开动了!");
}
public void stop(){
System.out.println("奔驰停了!");
}
}
//第二种车
class Ford implements Car{
public void run(){
System.out.println("伏特开动了!");
}
public void stop(){
System.out.println("伏特停了!");
}
}
//加一个工厂类,为客户端实例化一个对象
class Factory{
//
public static Car getCarInstance(){
//return new Benz();
//实例化伏特
return new Ford();
}
}
public class SimpleFactorydemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* 没有使用工厂模式时,即没有添加工厂类Factory时*/
//错误的
// Benz benz = new Benz();
// benz.run();
//调用奔驰
// Car benz = new Benz();
// benz.run();
// //调用伏特
// Car ford = new Ford();
// ford.run();
//
/**
* 添加了Factory类后*/
Car benz = Factory.getCarInstance();
benz.run();
benz.stop();
//客户端不能选择
}
}
********************************************************
c、代码2:
如果用户希望工厂能创造用户想要的汽车,输入参数在工厂中没有
*******************************************************
package designPatterns.factorydemo2;
//车类型
interface Car{
public void run();;
public void stop();;
}
//第一种车
class Benz implements Car{
public void run(){
System.out.println("奔驰开动了!");
}
public void stop(){
System.out.println("奔驰停了!");
}
}
//第二种车
class Ford implements Car{
public void run(){
System.out.println("伏特开动了!");
}
public void stop(){
System.out.println("伏特停了!");
}
}
//加一个工厂类,为客户端实例化一个对象
class Factory{
//
public static Car getCarInstance(String type){
//return new Benz();
//实例化伏特
//return new Ford();
Car c=null;
if(type.endsWith("Benz"))
c= new Benz();
else if(type.endsWith("Ford"))
c= new Ford();
return c;
}
}
public class SimpleFactorydemo2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Car benz = Factory.getCarInstance("Benz");
benz.run();
benz.stop();
Car ford = Factory.getCarInstance("Ford");
ford.run();
ford.stop();
//如果创建一个自己的车,则要判断工厂里面是否有
Car me = Factory.getCarInstance("adfjakljf");
if(me!=null)
{
me.run();
me.stop();
}
else{
System.out.println("造不了这种类型的车");
}
}
}
*******************************************************
e、代码3:利用java的反射机制来 解决扩充子类不去修改工厂
********************************************************
package designPatterns.factorydemo3;
//车类型
interface Car{
public void run();;
public void stop();;
}
//第一种车
class Benz implements Car{
public void run(){
System.out.println("奔驰开动了!");
}
public void stop(){
System.out.println("奔驰停了!");
}
}
//第二种车
class Ford implements Car{
public void run(){
System.out.println("伏特开动了!");
}
public void stop(){
System.out.println("伏特停了!");
}
}
//扩充的车
class Toyoto implements Car{
public void run(){
System.out.println("丰田开动了!");
}
public void stop(){
System.out.println("丰田停了!");
}
}
//加一个工厂类,为客户端实例化一个对象
class Factory{
//
public static Car getCarInstance(String type){
//return new Benz();
//实例化伏特
//return new Ford();
// Car c=null;
// if(type.endsWith("Benz"))
// c= new Benz();
// else if(type.endsWith("Ford"))
// c= new Ford();
// return c;
Car c=null;
try {
c = (Car)Class.forName("designPatterns.factorydemo3."+type).newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return c;
}
}
public class SimpleFatorydemo3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 如果创建一个自己的车,则要判断工厂里面是否有
Car me = Factory.getCarInstance("Toyoto");
if(me!=null)
{
me.run();
me.stop();
}
else{
System.out.println("造不了这种类型的车");
}
}
}
*******************************************************
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂和工厂模式
- 简单工厂和工厂模式
- 1,工厂模式--简单工厂
- 简单工厂和工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂模式和抽象工厂
- Struts2 Freemarker Jmesa(表格、分页) 使用的一点心得
- C语言写的文本编辑器
- 电信系统方案 >> 电信综合营帐系统
- 电信系统方案 >> 电信Boss系统
- 2008-2-20
- 简单工厂 模式
- 如何取消Windows系统的默认共享
- 3D开学了
- 【转】你凭什么领导
- C语言写的下雪程序
- FF与IE关于height width理解的差异
- linux2.6内核编译心得
- Worm.Win32.Diskgen.gen/磁碟机也捎带广告?
- x界面无法进入的解决方法