日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java:伪造工厂的闭包以创建域对象

發(fā)布時間:2023/12/3 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java:伪造工厂的闭包以创建域对象 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近,我們想要創(chuàng)建一個域?qū)ο?#xff0c;該對象需要具有外部依賴關(guān)系才能進行計算,并且希望能夠在測試中解決該依賴關(guān)系。

最初,我們只是在領(lǐng)域類中新建依賴項,但這使得無法在測試中控制其值。

同樣,我們似乎不應該將這種依賴關(guān)系傳遞到域?qū)ο蟮臉?gòu)造函數(shù)中,因為它不是定義對象的狀態(tài),而只是定義對象使用的狀態(tài)。

我們最終得到了類似于以下代碼的內(nèi)容,其中將域?qū)ο笞鳛閮?nèi)部類:

public class FooFactory {private final RandomService randomService;public FooFactory(RandomService randomService) {this.randomService = randomService;}public Foo createFoo(String bar, int baz) {return new Foo(bar, baz);}class Foo {private String bar;private int baz;public Foo(String bar, int baz) {this.bar = bar;this.baz = baz;}public int awesomeStuff() {int random = randomService.random(bar, baz);return random * 3;}} }

然后,對該代碼的測試可能如下所示:

public class FooFactoryTest {@Testpublic void createsAFoo() {RandomService randomService = mock(RandomService.class);when(randomService.random("bar", 12)).thenReturn(13);FooFactory.Foo foo = new FooFactory(randomService).createFoo("bar", 12);assertThat(foo.awesomeStuff(), equalTo(39));} }

解決該問題的方法有點冗長,但似乎工作得很好。

參考: Java:偽造工廠的閉包以從我們的JCG合作伙伴 創(chuàng)建域?qū)ο?? Mark Needham博客上的 Markh Needham。


翻譯自: https://www.javacodegeeks.com/2012/03/java-faking-closure-with-factory-to.html

總結(jié)

以上是生活随笔為你收集整理的Java:伪造工厂的闭包以创建域对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。