软件设计模式之简单工厂模式

发布于:2025-03-12 ⋅ 阅读:(11) ⋅ 点赞:(0)

目录

一.类图(手机生产)

二.代码实现

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();
    }
}

网站公告

今日签到

点亮在社区的每一天
去签到