設計模式以外觀模式(8):將多個內部模塊調用封裝在一個類中

場景

場景:
一、假設咱們如今有兩個子系統:子系統一、子系統2。
二、子系統1,有多個內部模塊,模塊A、模塊B和模塊C。
三、子系統2,如今有一個功能,須要同時依賴3個模塊來實現一個功能設計模式

內容

1.不使用模式

咱們在一個類中調用,mian方法至關於子系統2,其中類:ModuleA、ModuleB、ModuleC。spa

1.1 類圖

image.png

1.2 代碼

public class NonPattern {

   public static void main(String[] args) {
//main表明子系統2,要基於子系統1的3個模塊的功能實現一個業務邏輯

        ModuleA moduleA = new ModuleA();
        ModuleB moduleB = new ModuleB();
        ModuleC moduleC = new ModuleC();

        moduleA.excute();
        moduleB.excute();
        moduleC.excute();
    }


    public static class ModuleA{
        public void excute(){
            System.out.println("子系統1的模塊A功能");
        }
    }

    public static class ModuleB{
        public void excute(){
            System.out.println("子系統1的模塊B功能");
        }
    }

    public static class ModuleC{
        public void excute(){
            System.out.println("子系統1的模塊C功能");
        }
    }
}

2.使用外觀模式模式

2.1 類圖

image.png

2.2 代碼

public class FacadePattern2 {
    public static void main(String[] args) {
        SystemFacade facade = new SystemFacade();
        facade.excute();
    }

    public static class SystemFacade{
        public void excute(){
            ModuleA moduleA = new ModuleA();
            ModuleB moduleB = new ModuleB();
            ModuleC moduleC = new ModuleC();
            moduleA.excuete();
            moduleB.excuete();
            moduleC.excuete();
        }
    }

    public static class  ModuleA{
        public void excuete(){
                System.out.println("子系統1的A模塊功能");
        }
    }
    public static class  ModuleB{
        public void excuete(){
            System.out.println("子系統1的B模塊功能");
        }
    }
    public static class  ModuleC{
        public void excuete(){
            System.out.println("子系統1的C模塊功能");
        }
    }
}

3.總結

3.1 不使用設計模式對比

  1. 問題一:對應子系統1來講,維護成本過高了,就是由於子系統2要care多個模塊。若是隻是3個模塊還湊合,若果是20個模塊呢?那子系統1對子系統2的各個模塊的瞭解就要不少,維護成本很高。
  2. 問題二:就這個多個模塊組成的一個功能,若是在子系統1的多個地方都使用到了,那麼那段代碼就會在多個地方都有重複,複製粘貼的過程,一旦這段業務邏輯修改了,好比還要加入一個模塊D的功能,可能就要修改多個地方 的代碼,會弄的很是的麻煩。

3.2 使用設計模式對比

  1. 好處1:子系統2不須要care太多的模塊,只要care一個門面類的接口就能夠了。
  2. 好處2:若是多個地方都要調用這段邏輯,那麼若是這個邏輯變了,只須要在門面類一個地方修改就能夠了。
相關文章
相關標籤/搜索