當(dāng)前位置:首頁 > IT技術(shù) > 編程語言 > 正文

Java工廠模式
2022-04-29 13:53:29

package com.czie.d3_factory_pattern;

/**
 目標(biāo):工廠模式。

 什么是工廠設(shè)計模式?
 工廠模式(Factory Pattern)是 Java 中最常用的設(shè)計模式之一。
 這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的方式。
 之前我們創(chuàng)建類對象時, 都是使用new 對象的形式創(chuàng)建, 除new 對象方式以外,
 工廠模式也可以創(chuàng)建對象。

 工廠設(shè)計模式的作用:
 1.對象通過工廠的方法創(chuàng)建返回,工廠的方法可以為該對象進行加工和數(shù)據(jù)注入。
 2.可以實現(xiàn)類與類之間的解耦操作(核心思想,重點)

 小結(jié):
 工廠模式的思想是提供一個工廠方法返回對象!
 */
public class FactoryDemo {
    public static void main(String[] args) {
        Computer c1=FactoryPattern.createComputer("huawei");
        c1.start();
        Computer c2=FactoryPattern.createComputer("mac");
        c2.start();

    }
}
package com.czie.d3_factory_pattern;

/**
 * FileName: FactoryPattern
 * Author:   lps
 * Date:     2022/4/29 11:58
 * Sign:劉品水 Q:1944900433
 */
public class FactoryPattern {
    /**
     * 定義一個方法 創(chuàng)建對象返回
     */
    public static Computer createComputer(String info) {
        switch (info) {
            case "huawei":
                Computer c1 = new Huawei();
                c1.setName("huawei pro 16");
                c1.setPrice(4399);
                return c1;
            case "mac":
                Computer c2 = new Mac();
                c2.setName("MacBook2022");
                c2.setPrice(8999);
                return c2;
            default:
                return null;
        }
    }
}
package com.czie.d3_factory_pattern;

/**
 * FileName: Mac
 * Author:   lps
 * Date:     2022/4/29 11:42
 * Sign:劉品水 Q:1944900433
 */
public class Mac extends Computer{

    @Override
    public void start() {
        System.out.println(getName()+"一個小蘋果,蘋果電腦開機咯");
    }
}
package com.czie.d3_factory_pattern;

/**
 * FileName: Huawei
 * Author:   lps
 * Date:     2022/4/29 11:44
 * Sign:劉品水 Q:1944900433
 */
public class Huawei extends Computer{
    @Override
    public void start() {
        System.out.println(getName()+"開機,展示華為的圖標(biāo)~~~");
    }
}
package com.czie.d3_factory_pattern;

/**
 * FileName: Computer
 * Author:   lps
 * Date:     2022/4/29 11:41
 * Sign:劉品水 Q:1944900433
 */
public abstract class Computer {
    private String name;
    private double price;
    public abstract void start();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}

?

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務(wù)立即開通 >