目录
一.类图(手机生产)
二.代码实现
Iphone类:
Vivo类:
Mobile类:
MobileFactory类:
Client类:
一.类图(手机生产)
补充:MobileFactory也可以直接指向抽象类Mobile
二.代码实现
Iphone类:
public class Iphone extends Mobile{
public Iphone(){
this.name = "iphone20";
this.price = 3000;
this.productAdd="上海";
}
@Override
public void show() {
System.out.println("本手机由苹果公司设计,型号是"+this.name+",出厂价格为:"+this.price+";产地是"+this.productAdd);
}
}
Vivo类:
public class Vivo extends Mobile{
public Vivo(){
this.name = "Vivo XX";
this.price = 4500;
this.productAdd="广州";
}
@Override
public void show() {
System.out.println("本手机由Vivo公司设计,型号是"+this.name+",出厂价格为:"+this.price+";产地是"+this.productAdd);
}
}
Mobile类:
public abstract class Mobile {
public String name;
public int price;
public String productAdd;
public void call(){
System.out.println(this.name+"拨打电话。");
}
public abstract void show();
}
MobileFactory类:
public class MobileFactory {
public static Mobile creatMobile(String mobileName){
Mobile mobile = null;
if("i".equals(mobileName) || "iphone".equals(mobileName)){
mobile = new Iphone();
}else if("v".equals(mobileName) || "vivo".equals(mobileName)){
mobile = new Vivo();
}
return mobile;
}
}
补充1:"i".equals(mobileName)最好不要写成mobileName.equals("i")
补充2:字符串的比较方法: .equals()
Client类:
public class Client {
public static void main(String[] args){
//显式创建,不建议
//MobileFactory mf =new MobileFactory();
//传入参数得到产品
//添加static,直接调用静态工厂方法
Mobile mobile = MobileFactory.creatMobile("vivo");
// 3.使用产品
mobile.show();
mobile.call();
// MobileFactory.creatMobile("vivo").show();
}
}