一、什么是工厂模式
讲解工厂模式之前,我们先来了解一下工厂是干什么的。顾名思义,工厂就是集中高效的生产商品。也就是说,在编程中,工厂模式,就是效仿工厂,进行集中、高效实例化对象。(实例化就是生产商品)
二、简单工厂模式小案例
首先,我们先来确定一下案例的流程
1. 创建一个工厂;
2.工厂要生产一些皮制品;
3. 皮制品包括钱包和大衣;
4. 找个消费者来消费。
1. 创建一个工厂
package com.practice.basic.factorymodel;
public class Factory {
public static Skin getName(String name){
//如果名称为wallet,则new一个wallet
if(name.equals("wallet")){
return new Wallet("wallet",500);
}else if(name.equals("coat")){
return new Coat("coat",999);
}else
return null;
}
}
皮制品要遵守一定的规范——要有名字和价格:
package com.practice.basic.factorymodel;
public interface Skin {
//提供2个方法:名称与价格
public void name();
public void price();
}
皮革制品:钱包
package com.practice.basic.factorymodel;
public class Wallet implements Skin {
private String name;
private int price;
public Wallet(String name,int price){
this.name = name;
this.price = price;
}
//显示wallet名字
public void name() {
System.out.println("name is:"+name);
}
//显示wallet价格
public void price() {
System.out.println("price is:"+price);
}
}
皮革制品:大衣
package com.practice.basic.factorymodel;
public class Coat implements Skin {
private String name ;
private int price;
public Coat(String name,int price){
this.name = name;
this.price = price;
}
//显示coat名字
public void name() {
System.out.println("name is:"+name);
}
//显示coat价格
public void price() {
System.out.println("price is:"+price);
}
}
消费者:
package com.practice.basic.factorymodel;
public class Consumer {
public static void main(String[] args) {
//实现接口的向上转型
Skin wallet = Factory.getName("wallet");
wallet.name();
wallet.price();
Skin coat = Factory.getName("coat");
coat.name();
coat.price();
}
}
项目目录结构如下:
运行结果如下: