工厂模式,世界梦工厂!

44 篇文章 0 订阅
15 篇文章 0 订阅

洪爵今天想给大家讲讲工厂模式呀!工厂模式,世界的梦工厂!

工厂模式是一种创建型的模式,很多人可能就问,啥是创建型模式呀?创建型模式就是处理对象创建方式的模式。

很多人劈里啪啦上来讲一大堆东西,然后最后才是上代码。洪爵却不这么想,洪爵觉得应该先给大家看代码,在看的过程,大家会去思考,这是个什么东西,为什么要这么写,然后才会有一个动脑子和顿悟的过程,所以先上代码:

// Hair.java
// 定义一个接口Hair, 然后里面有一个方法, 有关于Hair的color
public interface Hair {
    void color();
}
// BlackHair.java
// BlackHair实现Hair接口, 实现它的方法
public class BlackHair implements Hair {
    public void color() {
        System.out.println("黑颜色");
    }
}
// WhiteHair.java
// WhiteHair实现Hair接口, 实现它的方法
public class WhiteHair implements Hair {
    public void color() {
        System.out.println("白颜色");
    }
}
// YellowHair.java
// YellowHair实现Hair接口, 实现它的方法
public class YellowHair implements Hair {
    public void color() {
        System.out.println("黄颜色");
    }
}
// HairFactory.java
public class HairFactory {
    // 通过hairColor去生成对应的对象
    public Hair getHair(String hairColor) {
        if(null == hairColor) {
            return null;
        }
        if("YELLOW".equalsIgnoreCase(hairColor)) {
            return new YellowHair();
        } else if("BLACK".equalsIgnoreCase(hairColor)) {
            return new BlackHair();
        } else if("WHITE".equalsIgnoreCase(hairColor)) {
            return new WhiteHair();
        }
        return null;
    }
}
// Client.java
public class Client {
    public static void main(String[] args) {
        // 初始化工厂
        HairFactory hairFactory = new HairFactory();
        // 让这个工厂去按照要求生产
        Hair hair1 = hairFactory.getHair("YELLOW");
        hair1.color();
        Hair hair2 = hairFactory.getHair("WHITE");
        hair2.color();
        Hair hair3 = hairFactory.getHair("BLACK");
        hair3.color();
    }
}
黄颜色
白颜色
黑颜色

​类图
在这里插入图片描述
通过上述代码,大家可以发现,我们通过Hair工厂代替我们去new有关于Hair的对象,在不涉及到整个Hair的具体实现类,达到了封装的效果。也就是说Hair工厂提供一个方法供外部使用,这样当涉及到好几个Hair的实现类变动时,我们都能收束到一个方法去进行修改和管理,避免到处去去修改之前new Hair的代码
这样给系统带来了可拓展性维护性,同时屏蔽了底层细节

但是工厂模式也不是没有缺点的,当你要去增加一个新产品的时候,比如说水壶(接口),那么水壶衍生出来就有各种各样的水壶(具体实现),然后又要定义一个专门制作水壶的工厂,在一定程度上增加了系统的复杂度

好啦,本篇工厂模式就到这里啦,希望大家一定要自己去敲一遍代码,感觉一下工厂模式的便利哦!

愿每个人都能带着怀疑的态度去阅读文章并探究其中原理。

道阻且长,往事作序,来日为章。

期待我们下一次相遇!
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KnightHONG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值