简单工厂模式又叫做静态工厂方法模式属于创建型模式。简单工厂模式专门定义一个类来负责创建其他类的实例,由这个类来封装实例化对象的行为,被创建的实例通常都具有共同的父类。简单工厂模式并不是23种设计模式之一,反而比较向一种编程习惯。 简单工厂包括:
【案例】
假设有家卖手机的线下门店 它目前只卖OPPO和VIVO手机,但是随着业务的发展,它又加入了HUAWEI手机和XIAOMI手机 小张、小王、小李想买不同的手机,请设计程序完成手机订购功能
public abstract class Phone {
protected String type;
public abstract void buy();
public void pack(){
System.out.println(type +"手机打包");
}
}
OPPO手机
public class OPPOPhone extends Phone {
@Override
public void buy() {
System.out.println("购买OPPO手机");
}
}
VIVO手机
public class VIVOPhone extends Phone {
@Override
public void buy() {
System.out.println("购买VIVO手机");
}
}
华为手机
public class HUAWEIPhone extends Phone {
@Override
public void buy() {
System.out.println("购买华为手机");
}
}
小米手机
public class XIAOMIPhone extends Phone{
@Override
public void buy() {
System.out.println("购买小米手机");
}
}
public class SimpleFactory {
public static Phone buyPhone(String type){
Phone phone = null;
if ("OPPO".equals(type)){
phone = new OPPOPhone();
}else if ("VIVO".equals(type)){
phone = new VIVOPhone();
}else if ("HUAWEI".equals(type)){
phone = new HUAWEIPhone();
}else if ("XIAOMI".equals(type)){
phone = new XIAOMIPhone();
}
return phone;
}
public static void main(String[] args) {
Phone product = SimpleFactory.buyPhone("OPPO");
product.buy();
}
}
优点:
实现对象创建和使用的分离 创建对象完全交给工厂类负责
客户端无需知道所创建具体产品的类名,只需知道参数即可
缺点:
工厂类集中了所有产品的创建逻辑,职责过重,一旦异常,整个系统将受影响
不够灵活 如果每新增个产品就要修改工厂类 违背了OCP开闭原则
简单工厂模式的适用环境
工厂类负责创建对的对象比较少,因为不会造成工厂方法中的业务逻辑过于复杂
客户端只知道传入工厂类的参数,对如何创建对象不关心
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/m0_60117382/article/details/123536552
内容来源于网络,如有侵权,请联系作者删除!