diff --git a/creation/25_new/REDME.md b/creation/25_new/REDME.md new file mode 100644 index 0000000..fbaad85 --- /dev/null +++ b/creation/25_new/REDME.md @@ -0,0 +1,14 @@ +# New pattern + +New 模式 + +最最最简单,最最最常用的模式。 + +以至于很多地方都不把它当成模式,都已经熟悉到了被忽略的地步,我觉得这是不公平的:),要恢复它地位。 + +New模式是就是使用类似New()/new()/NewXXX()之类的方法,返回一个实现了某个接口的对象的引用。 + +须要注意的是的: + ++ 一定是返回 结构对象的地址(引用) ++ 该结构对象往往返回一个实现了某接口的方法. diff --git a/creation/25_new/new_test.go b/creation/25_new/new_test.go new file mode 100644 index 0000000..d8144dc --- /dev/null +++ b/creation/25_new/new_test.go @@ -0,0 +1,28 @@ +package newpattern + +import ( + "fmt" + "testing" +) +type homecat interface { + sleep() +} + +type blackCat struct { + name string +} + +func newBlackCat(name string) homecat{ + return &blackCat{name} +} + + +func (b blackCat) sleep() { + fmt.Print( b.name + " is sleeping") +} + +func TestNewMode(t *testing.T){ + + cat := newBlackCat("pi") + cat.sleep() +} \ No newline at end of file