必威体育Betway必威体育官网
当前位置:首页 > IT技术

简单工厂模式:真正的“封装隔离”

时间:2019-06-15 05:42:07来源:IT技术作者:seo实验室小编阅读:63次「手机版」
 

简单工厂模式

一、举例

特别喜欢王宝强主演的电视剧“士兵突击”,他那样老实憨厚一根筋,却凭着那份执着,成就了自己的不平凡。

其中有一段,许三多刚调到七连,成才来三班看许三多,白铁军向成才要烟,成才给的是春城,等成才走后白铁军对许三多说:“塔山是给连长排长,红河是给班长班副,春城是给战友的,哪个连都有这样的人,七连揍这一个”。

这里写图片描述

这里写图片描述

这里写图片描述

联系到设计模式:

抽象类:烟

具体实现类:塔山、红河、春城

工厂类:成才

客户端:连长、排长、班长、战友、白铁军

// 接口定义:烟
public interface Cigarette {
    // 冒烟方法
    public void smoking();
}

// 具体实现对象:塔山
public class TaShan implements Api {
    public void smoking() {
        System.out.println("我冒的是塔山的烟");
    }
}

// 具体实现对象:红河
public class HongHe implements Api {
    public void smoking() {
        System.out.println("我冒的是红河的烟");
    }
}

// 具体实现对象:春城
public class ChunCheng implements Api {
    public void smoking() {
        System.out.println("我冒的是春城的烟");
    }
}

// 工厂类,用来创建Api对象
public class ChengCai {
    public static Cigarette getCigarette(String who) {
        Cigarette cigarette = null;
        if (who.equals("连长") || who.equals("排长")) {
            cigarette = new TaShan();
        } else if (who.equals("班长")) {
            cigarette = new HongHe();
        } else if (who.equals("战友")) {
            cigarette = new ChunCheng();
        }
        return cigarette;
    }
}

// 客户端:白铁军
public class BaiTiejun {
    public static void askCigarette() {
        Cigarette cigarette = ChengCai.getCigarette("战友");
    }
}

二、用来解决的问题

大家都知道,在Java应用开发中,要“面向接口编程”。为什么要面向接口编程呢? 由于外部调用和内部实现被接口隔离开了,那么只要接口不变,内部实现的变化就不会影响到外部应用,从而使得系统更加灵活,具有更好的扩展性和可维护性,这也验证了那句话“接口是系统可挺拔性的保证”。根据接口的作用和用途,浓缩下来,接口的思想就是:“封装隔离”

举个接口使用的例子:

Api api = new Impl();  

看上面的代码有没有发现什么问题?

想想接口的功能和思想,你会发现客户端调用的时候,客户端不但知道了接口还知道了具体的实现就是Impl。接口的思想是“封闭隔离”,而实现类应该是同接口封装并同客户端隔离开的,也就是说客户端不应该知道具体的实现类就是Impl。

总结起来:工厂设计模式就是为了做到真正的“封装隔离”。

三、定义

提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。

四、UML图

这里写图片描述

  • AbstractProduct:抽象产品,包含关于产品的抽象方法。
  • Product:具体产品,包含对抽象产品的具体实现。
  • AbstractFactory:抽象工厂,包含所有产品创建的抽象方法。
  • ConcreateFactory:具体工厂,创建具有特定实现的产品对象。
  • Client:客户端,通过工厂类获取接口对象,然后面向接口编程。

五、使用场景

  • 想要完全封装隔离,让外部只能通过接口来操作封装体。
  • 想要对外创建对象的职责集中管理和控制。

六、备注

简单工厂在平常的开发中还是挺常用的,简单而神奇,所以还是应该好所以好掌握它。

相关阅读

分享到:

栏目导航

推荐阅读

热门阅读