简单工厂、工厂方法和抽象工厂

本文深入探讨了工厂模式在软件设计中的应用,包括简单工厂、工厂方法和抽象工厂三种模式的实现和示例。通过具体代码展示了如何创建不同类型的对象,如汽车和电子产品,而不暴露创建逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单工厂

// 汽车类
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();
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值