设计模式--工厂模式

这里直接上代码,然后给自己解释一下.

首先定义一个汽车的接口:

/**
*

  • @author dch

*/
//定义一个汽车接口
public interface Car {

//定义一个汽车生产的方法(抽象方法)(因为这里是接口,都是抽象方法)
public void showInfo();

}

定义宝马汽车类(BMCar)和奥迪汽车类(ADCar)去实现接口

/*
*

  • @author dch

*/
//宝马汽车类实现汽车的接口
public class BMcar implements Car{

@Override
//宝马汽车类重写接口的方法汽车是宝马汽车
public void showInfo() {
	System.out.println("我们生产宝马汽车");	
}

}

/**
*
*

  • @author dch

*/
//奥迪汽车类实现汽车的接口
public class ADcar implements Car{

@Override
//奥迪汽车类重写接口的方法汽车是奥迪汽车
public void showInfo() {
	// TODO Auto-generated method stub
	System.out.println("我们生产奥迪汽车");
	
}

}

定义一个汽车工厂(CarFactory)的接口:

/**
*

  • @author dch

*/
//定义一个汽车工厂接口
public interface CarFactory {

//生产汽车的方法
public Car produce();

}

定义宝马汽车工厂(BMCarFactory)类和奥迪汽车工厂(ADCarFactory)类去实现CarFactory接口:

/**
*

  • @author dch

*/
//宝马汽车工厂类实现汽车工厂的接口
public class BMcarFactory implements CarFactory {

public Car produce() {
	// TODO Auto-generated method stub
	return  new BMcar();
}

}

/**
*

  • @author dch

*/
//定义一个奥迪汽车工厂实现汽车工厂的接口
public class ADcarFactory implements CarFactory{

public Car produce(){
	
	return new ADcar();
}

}

测试类:
/**
*

  • @author dch

*/
//测试类
public class Test {

public static void main(String[] args) {

	//我们要生产一个汽车,先找工厂;
	//又因为我们要生产奥迪汽车
	//因此我们要找到奥迪工厂来生产
	CarFactory factory = new ADcarFactory();
	Car car = factory.produce();
	car.showInfo();
	
	CarFactory factory2 = new BMcarFactory();
	Car car2 = factory2.produce();
	car2.showInfo();
	
}

}

自我理解:
首先理解工厂模式的主要作用就是创建对象;
明白这一点我们就能知道宝马汽车工厂(BMarFactory)和奥迪汽车工厂(ADCarFactory)的工作
就是为了给我们创建一个与之对应的BMCar或者ADCar的对象,
因为没有对象我们就不能调用汽车的showInfo()方法,
说到这里我就能明白这个工厂模式用Carfactory作为接口,然后他的下面可以有很多不同牌子的工厂,
这样后期加工厂(也就是为了加对象)的时候不需要在原来的工厂代码里面添加代码,毕竟这违背了开闭原则(设计模式的基本原则),我们就可以直接定义XXCarFactory去实现CarFactory的方法,从而去创建了一个新的对象,然后去调用汽车showInfo()方法.

还有一个地方我自己需要理解的是:

public Car produce() {
// TODO Auto-generated method stub
return new BMcar();
}

因为我自己对这种引用类型的不熟悉的原因,所以还是提醒一下自己,

首先这个Car 可以写成 BMcar;
再者在写一个这,或许自己就能更明白:
这里在干嘛呢: Car bmcar = new BMcar();
BMcar bmcar = new BMcar();
自己又问到为啥不能这样写:
Car bmcar = new Car();
1.接口不能new,
2.实现接口的类有很多,就算这个式子成立,那这个对象算是调用哪个对象,
总不可能可以调用所有的对象,这样是不可能.(提示自己不要钻进去,等我们明白一下再添加)

通过这样:自己明白了这个工厂模式,可以通过汽车工厂这个接口去实现更多的XX汽车工厂得到对象
去实现car接口在XXcar的方法,
而这个方法是XXcar是实现car接口的方法
因此总结就是可以创建一个新的XXcar的对象去实现方法. 希望自己理解的差不多.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值