工厂设计模式
1、工厂设计模式的作用:将创建者和调用者进行分离(我们经常是创建对象之后再调用)
2、简单工厂模式,一个工厂生产很多对象(最常用)。
3、工厂方法:在简单工厂的基础之上更加细分,分为几个工厂
简单工厂模式(生产笔记本电脑)
1、定义电脑接口,依赖倒置原则,即面向接口编程
public interface Computer {
/**
* 不同电脑打开浏览器
*/
public void browser();
}
2、定义HP和ASUS两个品牌的笔记本电脑
public class ASUSComputer implements Computer {
@Override
public void browser() {
System.out.println("使用华硕笔记本打开浏览器");
}
}
public class HPConputer implements Computer {
@Override
public void browser() {
System.out.println("使用HP笔记本打开浏览器");
}
}
3、定义一个简单工厂,来"生产"这些对象
/**
* 生产电脑
* @author 紫炎易霄
*/
public class ComputerFactory {
/**
* 获得笔记本对象
*/
public static Computer getComputer(String name){
//定义一个句柄
Computer computer = null;
if("HP".equalsIgnoreCase(name)){
computer = new HPConputer();
}else if("ASUS".equalsIgnoreCase(name)){
computer = new ASUSComputer();
}
return computer;
}
}
4、定义测试类
public class FactoryTest {
public static void main(String[] args) {
Computer asus = ComputerFactory.getComputer("asus");
Computer hp = ComputerFactory.getComputer("hp");
asus.browser();
hp.browser();
}
}
运行结果
工厂方法模式(生产笔记本电脑)
1、接口
public interface Computer {
/**
* 不同电脑打开浏览器
*/
public void browser();
}
2、实现类
public class HPConputer implements Computer {
@Override
public void browser() {
System.out.println("使用HP笔记本打开浏览器");
}
}
public class ASUSComputer implements Computer {
@Override
public void browser() {
System.out.println("使用华硕笔记本打开浏览器");
}
}
3、两个电脑品牌的工厂
/**
* 华硕电脑生产工厂
* @author 紫炎易霄
*/
public class ASUSFactory {
/**
* 生产电脑的方法
*/
public static ASUSComputer getASUSComputer(){
return new ASUSComputer();
}
}
/**
* 惠普电脑工厂
* @author 紫炎易霄
*/
public class HPFactory {
/**
* 获得惠普电脑的方法
*/
public static HPConputer getHPConputer(){
return new HPConputer();
}
}
4、测试方法
public class FactoryTest {
public static void main(String[] args) {
HPConputer hpConputer = HPFactory.getHPConputer();
hpConputer.browser();
ASUSComputer asusComputer = ASUSFactory.getASUSComputer();
asusComputer.browser();
}
}
运行结果