简单工厂
// 汽车类
public abstract class Car {
public abstract void go();
}
// 比亚迪汽车
public class BYD extends Car {
@Override
public void go() {
System.out.println("BYD gogogo");
}
}
// 宝马汽车
public class BMW extends Car {
@Override
public void go() {
System.out.println("BMW gogogo");
}
}
// 测试类
public class DiDiTaxi {
public static Car getZhuanChe(String carName){
if("BYD".equals(carName)){
return new BMW();
}else if ("BMW".equals(carName)){
return new BMW();
}
return null;
}
public static void main(String[] args) {
Car car = DiDiTaxi.getZhuanChe("BMW");
car.go();
}
}
工厂方法
// 司机类
abstract class Driver {
public abstract Car hasCar();
}
// 比亚迪司机类
public class BYDDriver extends Driver {
@Override
public Car hasCar() {
return new BYD();
}
}
// 宝马司机类
public class BMWDriver extends Driver {
@Override
public Car hasCar() {
return new BMW();
}
}
// 测试类
public class DiDiTaxi {
public static Driver getZhuanChe(String carName){
if("BYD".equals(carName)){
return new BYDDriver();
}else if ("BMW".equals(carName)){
return new BMWDriver();
}
return null;
}
public static void main(String[] args) {
Driver driver = DiDiTaxi.getZhuanChe("BYD");
Car car = driver.hasCar();
car.go();
}
}
抽象工厂
// 手机类
public abstract class Phone {
public abstract void name();
}
// 华为手机
public class HuaWeiPhone extends Phone {
@Override
public void name() {
System.out.println("华为Phone");
}
}
// 小米手机
public class XiaoMiPhone extends Phone {
@Override
public void name() {
System.out.println("小米手机");
}
}
// ipad类
public abstract class IPad {
public abstract void name();
}
// 华为ipad
public class HuaWeiIPad extends IPad {
@Override
public void name() {
System.out.println("华为iPad");
}
}
// 小米ipad
public class XiaoMiIPad extends IPad {
@Override
public void name() {
System.out.println("小米iPad");
}
}
// 公司类
public abstract class Company {
public abstract void name();
public abstract Phone phone();
public abstract IPad ipad();
}
// 华为公司
public class HuaWeiCompany extends Company {
@Override
public void name() {
System.out.println("华为公司");
}
@Override
public Phone phone() {
return new HuaWeiPhone();
}
@Override
public IPad ipad() {
return new HuaWeiIPad();
}
}
// 小米公司
public class XiaoMiCompany extends Company {
@Override
public void name() {
System.out.println("小米公司");
}
@Override
public Phone phone() {
return new XiaoMiPhone();
}
@Override
public IPad ipad() {
return new XiaoMiIPad();
}
}
// 测试类
public class TestCompany {
public static void main(String[] args) {
Company huawei = new HuaWeiCompany();
huawei.name();
huawei.ipad().name();
huawei.phone().name();
Company xiaomi = new XiaoMiCompany();
xiaomi.name();
xiaomi.ipad().name();
xiaomi.phone().name();
}
}