设计模式-创建型模式-简单工厂模式详解
简单工厂模式
简介
简单工厂模式 : Simple Factory Pattern
是一种创建型设计模式
。
通过一个工厂类,封装了对象的创建逻辑。
客户端使用时不需要通过 new 的方式进行对象的创建
,而是直接调用工厂类中的方法获取对象
。
应用场景
场景介绍
1、有一个 手机的抽象类,声明了 手机的基本属性 和 功能方法;
2、不同品牌的手机,继承了 该抽象类;
3、有一个手机工厂,可以根据不同的参数,创建对应品牌的手机,并返回。
类图
案例代码
案例代码,就是按照 UML 类图进行实现的代码。
抽象类Phone
public abstract class Phone {
protected String brandName; // 品牌名
protected abstract void call(); // 抽象方法
public String getBrandName() {
return brandName;
}
public void setBrandName(String brandName) {
this.brandName = brandName;
}
}
实现类PhoneXiaoMi
public class PhoneXiaoMi extends Phone{
@Override
protected void call() {
System.out.println(brandName + " : 正在打电话。。。");
}
}
实现类PhoneHuaWei
public class PhoneHuaWei extends Phone{
@Override
protected void call() {
System.out.println(brandName + " 华为手机正在打电话......");
}
}
工厂类 PhoneFactory
public class PhoneFactory {
public static Phone createPhone(String brand) {
Phone phone = null;
if ("XiaoMi".equals(brand)){
phone = new PhoneXiaoMi();
phone.setBrandName("小米14");
}else if ("HuaWei".equals(brand)){
phone = new PhoneHuaWei();
phone.setBrandName("华为mate50");
}
return phone;
}
}
测试类
通过工厂类中的方法,获取不同的对象。
public class FactoryTest {
public static void main(String[] args) {
// 通过手机工厂获取一个 华为的手机
Phone phone = PhoneFactory.createPhone("HuaWei");
phone.call();
System.out.println(" =========== ");
// 通过手机工厂获取一个 小米的手机
Phone xiaoMi = PhoneFactory.createPhone("XiaoMi");
xiaoMi.call();
}
}
运行结果如下 :
华为mate50 华为手机正在打电话......
===========
小米14 : 正在打电话。。。