工厂模式,这可能是大家熟悉又陌生的一种设计模式,这里主要讲一下简单工厂,静态工厂,工厂方法,抽象工厂。任何可以产生对象的方法或者类,都可以称之为工厂,所以单例实际上也是工厂。getInstance,拿到一个对象,有人称他为静态工厂。为什么又new之后还要有工厂呢?有的时候生产对象的时候想给他加一些权限,想给他加一点日志,就是说可以灵活控制生产过程。
简单工厂
简单工厂我们直接来写一个代码吧,这样更直观
写了一个汽车工厂,制造汽车,并且在制造的过程中加了一个输出,这就是一个简单工厂
抽象工厂
我比较喜欢玩LOL,这里我就用游戏中的装备来给大家讲一下什么是抽象工厂
首先我们建一个lol的抽象类
商店里卖武器衣服之类的装备,也卖鞋子,我们再去给这两个类目建具体的装备比如无尽之刃,攻速鞋
都继承相应的父类,重写父类的方法
这时候我们选了一个VN,那我们要出这两件装备,我们就去商店选择相应类目里具体的装备
买了装备怎么来使用呢
这就是一个简单的抽象工厂,如果下一把玩一个法师,那同样的建个具体的装备,鞋子,以及英雄,而使用的时候只需要将main方法中的VN替换掉就可以了。是不是很简单呢?
上面写的代码中为什么使用abstract 不用interface呢,明明也可以实现啊,这里建议大家名词类的用abstract,形容词用interface。当然这不是绝对的,设计模式学的是思想,不要咬文嚼字。