中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java描述設計模式(02):簡單工廠模式

發布時間:2020-06-27 10:30:30 來源:網絡 閱讀:213 作者:知了一笑 欄目:編程語言

本文源碼:GitHub·點這里 || GitEE·點這里

一、生活場景簡介

1、引入場景

訂餐流程簡單描述
1)、食品抽象類,規定食品的基礎屬性操作
2)、魚類,雞肉類食品類擴展
3)、訂餐流程類,根據食品名稱,加工指定類型食品
4)、模擬客戶端預定操作

2、源代碼實現

1)、關系圖譜
Java描述設計模式(02):簡單工廠模式
2)、代碼實現

/**
 * 簡單工廠模式引入場景
 */
public class C01_InScene {
    public static void main(String[] args) {
        OrderFood1 orderFood = new OrderFood1() ;
        orderFood.orderFood("fish") ;
        orderFood.orderFood("chicken") ;
    }
}
/**
 * 訂餐流程
 */
class OrderFood1 {
    public Food1 orderFood (String foodName){
        Food1 food1 = null ;
        if (foodName.equals("fish")){
            food1 = new FishFood1() ;
            food1.setName("黑魚");
        } else if (foodName.equals("chicken")){
            food1 = new ChickenFood1() ;
            food1.setName("土雞");
        }
        if (food1 != null){
            food1.foodMaterial();
            food1.cookFood();
            return food1 ;
        } else {
            return null ;
        }
    }
}
/**
 * 食物抽象類
 */
abstract class Food1 {
    protected String name ;
    public abstract void foodMaterial () ;
    public void cookFood (){
        System.out.println("食品烹飪:" + name);
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
/**
 * 材料:黑魚一條
 */
class FishFood1 extends Food1 {
    @Override
    public void foodMaterial() {
        System.out.println("材料:黑魚一條");
    }
}
/**
 * 材料:土雞一號
 */
class ChickenFood1 extends Food1 {
    @Override
    public void foodMaterial() {
        System.out.println("材料:土雞一號");
    }
}

3、缺點分析

1)、OCP原則:軟件實體,如類、模塊和函數,應當對擴展開放,但對修改關閉。
2)、違反設計模式的OCP原則,新增食品類不方便擴展,代碼改動較大。

二、簡單工廠模式

1、基本概念

簡單工廠模式是屬于創建型模式,又叫做靜態工廠方法(Static Factory Method)模式,是由一個工廠對象決定創建出哪個類的對象實例。

2、代碼邏輯

1)、關系圖譜
Java描述設計模式(02):簡單工廠模式
2)、代碼實現

/**
 * 簡單工廠模式
 */
public class C02_SimpleFactory {
    public static void main(String[] args) {
        OrderFood2 orderFood2 = new OrderFood2() ;
        orderFood2.orderFood("chicken");
    }
}
class OrderFood2 {
    private SimpleFactory simpleFactory = new SimpleFactory() ;
    public void orderFood (String foodName){
        simpleFactory.orderFood(foodName) ;
    }
}
/**
 * 簡單工廠類:封裝食品的生產流程
 */
class SimpleFactory {
    public Food2 orderFood (String foodName){
        Food2 food2 = null ;
        if (foodName.equals("fish")){
            food2 = new FishFood2() ;
            food2.setName("黑魚");
        } else if (foodName.equals("chicken")){
            food2 = new ChickenFood2() ;
            food2.setName("土雞");
        }
        if (food2 != null){
            food2.foodMaterial();
            food2.cookFood();
            return food2 ;
        } else {
            return null ;
        }
    }
}
abstract class Food2 {
    protected String name ;
    public abstract void foodMaterial () ;
    public void cookFood (){
        System.out.println("食品烹飪:" + name);
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
class FishFood2 extends Food2 {
    @Override
    public void foodMaterial() {
        System.out.println("材料:黑魚一條");
    }
}
class ChickenFood2 extends Food2 {
    @Override
    public void foodMaterial() {
        System.out.println("材料:土雞一號");
    }
}

3、優缺點分析

1)、優點總結

該模式的核心是工廠類。這個類含有必要的邏輯判斷,可以決定在什么時候創建哪一個登錄驗證類的實例,而調用者則可以免除直接創建對象的責任。簡單工廠模式通過這種做法實現了對責任的分割,當系統引入新的登錄方式的時候無需修改調用者。

2)、缺點總結

這個工廠類集中了所有的創建邏輯,當有復雜的多層次等級結構時,所有的業務邏輯都在這個工廠類中實現。什么時候它不能工作了,整個系統都會受到影響。

三、源代碼地址

GitHub·地址
https://github.com/cicadasmile/model-arithmetic-parent
GitEE·地址
https://gitee.com/cicadasmile/model-arithmetic-parent

Java描述設計模式(02):簡單工廠模式

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桑日县| 德阳市| 武城县| 南澳县| 南充市| 额敏县| 延川县| 博爱县| 攀枝花市| 石狮市| 泊头市| 安宁市| 宁波市| 阿瓦提县| 松滋市| 西乡县| 航空| 白城市| 平凉市| 沙坪坝区| 陈巴尔虎旗| SHOW| 竹溪县| 十堰市| 淳化县| 贺兰县| 民勤县| 德江县| 小金县| 治多县| 东莞市| 蒙阴县| 邢台县| 红河县| 鹰潭市| 馆陶县| 旺苍县| 西城区| 凭祥市| 泰和县| 奈曼旗|