内容简介:factory.gofactory_test.go程序输出如下,
factory.go
// factory package factory import ( "errors" "fmt" ) const ( Cash = 1 DebitCard = 2 ) type PaymentMethod interface { Pay(amount float32) string } func GetPaymentMethod(m int) (PaymentMethod, error) { switch m { case Cash: return new(CashPM), nil case DebitCard: return new(DebitCardPM), nil default: return nil, errors.New(fmt.Sprintf("Payment method %d not recognized!", m)) } } type CashPM struct{} type DebitCardPM struct{} func (c *CashPM) Pay(amount float32) string { return fmt.Sprintf("%0.2f paid using cash", amount) } func (c *DebitCardPM) Pay(amount float32) string { return fmt.Sprintf("%#0.2f paid using debit card", amount) }
factory_test.go
// factorymethod package factory import ( "strings" "testing" ) func TestGetPaymentMethodCash(t *testing.T) { payment, err := GetPaymentMethod(Cash) if err != nil { t.Fatal("A payment method of type 'Cash' must exist") } msg := payment.Pay(10.30) if !strings.Contains(msg, "paid using cash") { t.Error("The cash payment method message doesn't correct") } t.Log("Log:", msg) } func TestGetPaymentMethodDebitCard(t *testing.T) { payment, err := GetPaymentMethod(DebitCard) if err != nil { t.Fatal("A payment method of type 'DebitCard' must exist") } msg := payment.Pay(22.30) if !strings.Contains(msg, "paid using debit card") { t.Error("The debit card payment method message doesn't correct") } t.Log("Log:", msg) }
程序输出如下,
image.png
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 设计模式——订阅模式(观察者模式)
- 设计模式-简单工厂、工厂方法模式、抽象工厂模式
- java23种设计模式-门面模式(外观模式)
- 设计模式-享元设计模式
- Java 设计模式之工厂方法模式与抽象工厂模式
- JAVA设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
断点:互联网进化启示录
[美]杰夫·斯蒂贝尔 / 师蓉 / 中国人民大学出版社有限公司 / 2014-11-1 / CNY 49.00
一部神经学、生物学与互联网技术大融合的互联网进化史诗巨著。 我们正置身网络革命中。互联网的每一丝变化都与你我息息相关。当科技变得无处不在时,它就会改变你我。在《断点》一书中,大脑科学家和企业家杰夫·斯蒂贝尔将带领读者来到大脑、生物与技术的交汇处,向读者展示生物学和神经学是如何与互联网技术发生联系的;我们是如何通过生物学上的前车之鉴,来预测互联网的发展的;互联网在经历增长、断点和平衡后又会发生......一起来看看 《断点:互联网进化启示录》 这本书的介绍吧!