简单工厂模式事宜图
简单工厂模式相关术语及基本实现过程
术语1-客户端:手机用户
术语2-工厂类、工厂方法和参数:一个工厂类用于创建各种产品,在工厂类中提供一个创建产品的工厂方法,该方法可以根据所传入参数的不同创建不同的具体产品对象
术语3-产品类:分为具体产品和抽象产品,具体产品如iphone、vivo手机,抽象产品则是具体产品的统称——手机 实现过程:简单工厂模式的使用者(客户端),只需告诉唯一的手机工厂(工厂类)的手机生产线(工厂方法)相应的手机型号(参数)便可得到一个手机(产品)对象 。
简单工厂模式的定义
简单工厂模式 (Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。
简单工厂模式的关键点
在简单工厂模式中用于创建实例的方法通常是静态(static)方法,因此又被称为静态工厂方法(Static Factory Method)模式 要点:如果需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无须知道其创建细节。
简单工厂模式的结构
简单工厂模式的组成部分: Factory(工厂角色) Product(抽象产品角色) ConcreteProduct(具体产品角色)
注:客户端(用户)角色是使用模式的角色,属于模式之外的,不是模式的组成部分
用户到商店买手机例子的类图
抽象产品类——手机类的代码:
public abstract class Phone {
String type;//手机类型
public abstract void showType();//显示手机类型的抽象方法
}
具体产品类——iphone与vivo手机类的代码:
//具体产品类(iphone手机类)
public class Iphone extends Phone{
public void showType() {
type="iphone";
System.out.println(type);
}}
//具体产品类(vivo手机类)
public class Vivo extends Phone{
public void showType() {
type="vivo";
System.out.println(type);
}}
工厂类——手机工厂的代码:
public class Test {
public static void main(String[] args) {
Phone phone;
phone=PhoneFactory.getPhone("vivo");
phone.showType();
}
}
客户端(本模式使用者)的代码:
//唯一的手机工厂
public class PhoneFactory {
public static Phone getPhone(String type) {
Phone phone=null;
//根据手机类型type的值,进行对象的创建
if ("iphone".equals(type)) {
phone=new Iphone();
}
if ("vivo".equals(type)) {
phone=new Vivo();
}
return phone;
}
}