简单工厂模式
简单工厂模式又叫静态方法模式(因为工厂类定义了一个静态方法)
现实生活中,工厂是负责生产产品的;同样在设计模式中,简单工厂模式我们可以理解为负责生产对象的一个类,称为“工厂类”。
package 工厂模式.简单工厂模式;
public interface Car {
//获取汽车名称
void name();
}
=======================================================================================
package 工厂模式.简单工厂模式;
//创建工厂
public class CarFactory {
/**
* 获取汽车
* @param name 需要汽车名称
* @return
*
* 缺点:不好扩展,如果有新的汽车过来需要修改代码
*/
public static Car getCar(String name){
if("五菱".equals(name)) {
return new Wuling();
} else if ("特斯拉".equals(name)) {
return new Tesila();
} else {
return null;
}
}
}
=======================================================================================
package 工厂模式.简单工厂模式;
public class Tesila implements Car {
//定义特斯拉
public void name() {
System.out.println("特斯拉!");
}
}
=======================================================================================
package 工厂模式.简单工厂模式;
public class Wuling implements Car {
//定义五菱神车
public void name() {
System.out.println("五菱神车!");
}
}
=======================================================================================
package 工厂模式.简单工厂模式;
public class Test {
public static void main(String[] args) {
//按照以前的思路 我们的操作如下
Car car1 = new Wuling(); //获取五菱神车
Car car2 = new Tesila(); //获取到特斯拉汽车
car1.name();
car2.name();
// 使用工厂以后,首先我们需要先创建工厂,然后输入你需要的车
// 说白了 工厂模式 就是你在调用new对象的时候,中间加入了一个中间的
// 组件,我们只需要通过中间的组件直接获取相关的内容就可以了
// 就像我们买汽车的时候,我们不需要和生产汽车的厂家买车 我们直接和汽车销售商进行购买
Car car3 = CarFactory.getCar("五菱");
Car car4 = CarFactory.getCar("特斯拉");
car3.name();
car4.name();
}
}
工厂方法模式
package 工厂模式.工厂方法模式;
public interface Car {
void name();
}
=======================================================================================
package 工厂模式.工厂方法模式;
public interface CarFactory {
//定义Car工厂
Car getCar();
}
=======================================================================================
package 工厂模式.工厂方法模式;
public class tesila implements Car {
//定义汽车名称
public void name() {
System.out.println("特斯拉");
}
}
=======================================================================================
package 工厂模式.工厂方法模式;
public class tesilafactory implements CarFactory {
//定义特斯拉工厂
public Car getCar() {
return new tesila();
}
}
=======================================================================================
package 工厂模式.工厂方法模式;
public class wuling implements Car {
//定义汽车名称
public void name() {
System.out.println("五菱神车!");
}
}
=======================================================================================
package 工厂模式.工厂方法模式;
public class wulingFactory implements CarFactory {
//定义五菱工厂
public Car getCar() {
return new wuling();
}
}
=======================================================================================
package 工厂模式.工厂方法模式;
public class TestCar {
public static void main(String[] args) {
//工厂方法模式,就是给每一个需要获取的东西创建一个工厂
//就像生产汽车一样,每个品牌都有一个自己的工厂
//这种实现起来,代码会很多,不实用,一般开发中用的都是简单工厂模式
Car car = new wulingFactory().getCar();
car.name();
}
}