目录
- 1 介绍
- 2 例子
- 2.1 手机接口
- 2.2 具体手机类(实现手机接口)
- 2.3 建立一个手机工厂
- 2.4 测试主类
- 3 例子升华
- 3.1 手机接口
- 3.2 手机类
- 3.3 工厂类
- 4 总结
- 4.1 核心角色
- 4.2 核心代码结构
1 介绍
简单工厂模式提供了一种创建对象的最佳方式。
2 例子
使用工厂模式,按照指定手机品牌的名字生产一个手机对象。
2.1 手机接口
手机接口定义了手机应该具有的具体功能,本例仅仅做了手机显示logo的功能。
//手机接口
interface Phone{
//显示logo
void showLogo();
//当然手机还有其他方法(打电话,发短信,浏览网页等)……
}
2.2 具体手机类(实现手机接口)
苹果手机:
//苹果手机类
class ApplePhone implements Phone{
@Override
public void showLogo() {
System.out.println("这是苹果手机的LOGO");
}
}
小米手机:
//小米手机
class XiaoMiPhone implements Phone{
@Override
public void showLogo() {
System.out.println("这是小米手机的LOGO");
}
}
2.3 建立一个手机工厂
//建一个手机工厂
class PhoneFactory{
public Phone getPhone(String PhoneType) {
if(PhoneType=="小米"){
return new XiaoMiPhone();
}
else if(PhoneType=="苹果"){
return new ApplePhone();
}
//没有这种手机返回null
return null;
}
}
注意手机工厂的关键方法就是返回一个手机对象,当然也可以包括一些工厂的其他方法。
2.4 测试主类
public class Main {
public static void main(String[] args) {
//创建一个手机工厂
PhoneFactory phoneFactory=new PhoneFactory();
//生产两部手机
Phone applePhone= phoneFactory.getPhone("苹果");
Phone xiaoMiPhone=phoneFactory.getPhone("小米");
//使用两部手机
applePhone.showLogo();
xiaoMiPhone.showLogo();
}
}
3 例子升华
3.1 手机接口
该接口(抽象类)定义了一个工厂模式需要生产产品的父类,里面的方法是这个产品需要实现的方法,一般是这个产品的功能。比如手机打电话、发短信、发微信、浏览网页等方法。
3.2 手机类
工厂模式的好处在于,需要添加一个新的产品类的时候,直接实现其接口,重写(实现)里面产品功能方法,然后再在工厂里面注册一下就可以,非常符合逻辑。
3.3 工厂类
工厂类的核心方法就是生产产品,但是除了这些还可以让工厂更加灵活,比如:返回工厂能生产哪些产品的名字、记录工厂已经生产了多少产品、生产了的总的生产成本、每天生产超出额度不再生产等等。
4 总结
4.1 核心角色
- 待生产产品父类(接口、抽象类):包括产品的属性和功能方法;
- 具体产品类:实现了产品父类接口;
- 工厂类:核心方法是根据产品信息返回一个对象。
4.2 核心代码结构
工厂类的get产品对象方法。