Skip to content

Instantly share code, notes, and snippets.

@nasust
Created December 8, 2016 10:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nasust/c24dbf32475c7de0561bc284db5c46b6 to your computer and use it in GitHub Desktop.
Save nasust/c24dbf32475c7de0561bc284db5c46b6 to your computer and use it in GitHub Desktop.
package main
import "fmt"
type Image interface {
DisplayImage()
}
type RealImage struct {
fileImage string
}
func NewRealImage(fileName string) *RealImage {
return &RealImage{fileName}
}
func (self *RealImage) DisplayImage() {
fmt.Println("Display ", self.fileImage)
}
type ProxyImage struct {
fileName string
image Image
}
func NewProxyImage(fileName string) *ProxyImage {
return &ProxyImage{fileName, nil}
}
func (self *ProxyImage) DisplayImage() {
if self.image == nil {
self.image = NewRealImage(self.fileName)
}
self.image.DisplayImage()
}
func main() {
image1 := NewProxyImage("HiRes_10MB_Photo1")
image2 := NewProxyImage("HiRes_10MB_Photo2")
image1.DisplayImage()
image2.DisplayImage()
image2.DisplayImage()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment