工厂
①简单工厂
②工厂方法
简单工厂简单代码
- 简单工厂模式
- 公用的抽象父类
- 需求:
- 假设有⼀个电脑的代⼯⽣产商,它⽬前已经可以代⼯⽣产联想电脑了,随着业务的拓展,这个代⼯⽣产 商还要⽣产
- 惠普的电脑,我们就需要⽤⼀个单独的类来专⻔⽣产电脑,这就⽤到了简单⼯⼚模式。这里是引用
步骤1:抽象类
在package com.qkjia.simpleFactory;
/**
* @author zqk
* @since 2021-11-30 21:44
* 简单工厂模式
* 公用的抽象父类
* 需求:
* 假设有⼀个电脑的代⼯⽣产商,它⽬前已经可以代⼯⽣产联想电脑了,随着业务的拓展,这个代⼯⽣产 商还要⽣产
* 惠普的电脑,我们就需要⽤⼀个单独的类来专⻔⽣产电脑,这就⽤到了简单⼯⼚模式。
*/
public abstract class Computer {
/**
* 产品的抽象⽅法,由具体的产品类去实现
*/
public abstract void start();
}
步骤2:工厂类
public class ComputerFactory {
/**
* 静态方法 创建电脑
* @param type 根据类型生产不同电脑
* @return Computer
*/
public static Computer createComputer(String type) {
Computer computer = null;
// 根据类型生产不同电脑
switch (type) {
case "lenovo":
computer = new LenovoComputer();
case "hp":
computer = new HpComputer();
}
return computer;
}
}
步骤3要生产的类
/**
* 华为电脑 继承抽象父类电脑
*/
public class HpComputer extends Computer{
@Override
public void start() {
System.out.println("惠普电脑启动 ");
}
}
public class LenovoComputer extends Computer {
@Override
public void start() {
System.out.println("联想电脑启动");
}
}
测试
public class simpleFactoryTest {
public static void main(String[] args) {
Computer computer = ComputerFactory.createComputer("hp");
computer.start();
}
}
工厂方法
/**
* 工厂方法模式
*/
public interface INoodlesFactory {
INoodles createNoodles();
}
/**
* 兰州拉面工厂类
*/
public class LzINoodlesFactory implements INoodlesFactory {
@Override
public INoodles createNoodles() {
return new LzNoodles();
}
}
/**
* 泡面生成类
*/
public class PaoINoodlesFactory implements INoodlesFactory {
@Override
public INoodles createNoodles() {
return new PaoNoodles();
}
}
/**
* 武汉热干面 工厂类
*/
public class ReganINoodlesFactory implements INoodlesFactory {
@Override
public INoodles createNoodles() {
return new ReganNoodles();
}
}
public class Test {
public static void main(String[] args) {
INoodlesFactory noodlesFactory = new LzINoodlesFactory();
INoodles noodles = noodlesFactory.createNoodles();
noodles.desc();
}
}
测试