简单工厂-SinpleFactory

本文深入探讨了简单工厂模式及其在创建产品实例中的作用,通过使用抽象类来降低客户端与产品类的耦合度,并强调了其在软件设计中的优点与局限性。同时,介绍了如何通过工厂类创建不同类型的对象,以及如何在增加新产品时对现有代码的影响。

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

 

简单工厂:

一个具体工厂通过条件语句创建多个产品,产品的创建逻辑集中在一个工厂类上。

客户端通过传递不同的参数给工厂,实现创建不同产品的目的。

增加新产品时,需要修改工厂类,这不符合OCP原则。

 

code:
抽象类(或接口):
public abrtract class Auto{
abstract public void run();
}

 

实现类Car:
public class Car extends Auto{
public Car(){}
public void run(){
System.out.println("启动car");
}
}

 

实现类Truck:
public class Truck extends Auto{
public Truck(){}
public void run(){
System.out.println("启动truck");
}
}


工厂类:
public class AutoFactory{
public static Auto createAuto(int autoId){
switch(autoId){
case1: return new Car();
case2: return new Truck();
}
}
}

 

客户端:
pubic class Client{
public static void main(){
Auto car = AutoFactory.createAuto(1);
car.run();
Auto truck = AutoFactory.createAuto(1);
truck.run();
}
}

 


优点:
客户端调用创建产品时与产品的具体类的耦合度降低;
令创建与使用的代码相分离,可以独立的变化,易维护和扩展;

 


缺点:
当产品有复杂的多层次等级结构时,工厂类只有一个,只能以不变应万变。
所有产品的创建都集中到工厂类中,系统在进行功能扩展时较为困难。
简单工厂使用静态方法作为工厂方法,无法形成继承,使用工厂的可扩展性受到限制。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值