简单工厂模式 应用

Rochelle ·
更新时间:2024-09-21
· 838 次阅读

一.简介

简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

将“类实例化的操作”与“使用对象的操作”分开,让使用者不用知道具体参数就可以实例化出所需要的“产品”类,从而避免了在客户端代码中显式指定,实现了解耦。

二.应用

我们通过手机的生产过程来演示简单工厂模式。

新建手机产品的接口及其实现类 /** * 手机接口 */ public interface Phone { //拨打电话 void call(); } /** * 华为手机 */ public class Huawei implements Phone{ @Override public void call() { System.out.println("华为拨打电话"); } } /** * 苹果手机 */ public class Iphone implements Phone { @Override public void call() { System.out.println("iphone拨打电话"); } } /** * 小米手机 */ public class Xiaomi implements Phone{ @Override public void call() { System.out.println("小米拨打电话"); } } 新建用来表示手机名称的枚举类 /** * 用来表示手机名称的枚举类 */ public enum PhoneNameEnum { //iphone IPHONE("iphone"), //小米 XIAOMI("xiaomi"), //小米 HUAWEI("huawei"); String name; PhoneNameEnum(String name) { this.name = name; } public String getName() { return name; } } 新建生产手机产品的工厂类 /** * phone 的抽象工厂类 * 提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 producePhone() 来创建手机产品。 */ public abstract class AbstractPhoneFactory { //生产 phone public abstract Phone producePhone(); } 测试 public class Test { //简单工厂模式 public static void main(String[] args) { PhoneFactory phoneFactory = new PhoneFactory(); String huawei = "huawei"; String xiaomi = "xiaomi"; String iphone = "iphone"; //这里提交了Java 一个很重要的特性---多态 Phone huaweiPhone = phoneFactory.producePhone(huawei); huaweiPhone.call(); Phone xiaomiPhone = phoneFactory.producePhone(xiaomi); xiaomiPhone.call(); Phone iphonePhone = phoneFactory.producePhone(iphone); iphonePhone.call(); } } 华为拨打电话 iphone拨打电话 小米拨打电话

可以看到工厂类根据参数类型返回相应的手机类,但是如果以后我们要新增新的轿手机,比如三星,那么我们就得修改工厂类,加上对应的else if分支,这违反了开闭原则。
怎么优化呢? 可以用工厂模式,下节学习


作者:刘德华一不小心就打代码



简单工厂模式 工厂模式

需要 登录 后方可回复, 如果你还没有账号请 注册新账号