万本电子书0元读

万本电子书0元读

顶部广告

Go Design Patterns电子书

售       价:¥

42人正在读 | 0人评论 6.2

作       者:Mario Castro Contreras

出  版  社:Packt Publishing

出版时间:2017-02-01

字       数:388.5万

所属分类: 进口书 > 外文原版书 > 电脑/网络

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
Learn idiomatic, efficient, clean, and extensible Go design and concurrency patterns by using TDD About This Book A highly practical guide filled with numerous examples unleashing the power of design patterns with Go. Discover an introduction of the CSP concurrency model by explaining GoRoutines and channels. Get a full explanation, including comprehensive text and examples, of all known GoF design patterns in Go. Who This Book Is For The target audience is both beginner- and advanced-level developers in the Go programming language. No knowledge of design patterns is expected. What You Will Learn All basic syntax and tools needed to start coding in Go Encapsulate the creation of complex objects in an idiomatic way in Go Create unique instances that cannot be duplicated within a program Understand the importance of object encapsulation to provide clarity and maintainability Prepare cost-effective actions so that different parts of the program aren’t affected by expensive tasks Deal with channels and GoRoutines within the Go context to build concurrent application in Go in an idiomatic way In Detail Go is a multi-paradigm programming language that has built-in facilities to create concurrent applications. Design patterns allow developers to efficiently address common problems faced during developing applications. Go Design Patterns will provide readers with a reference point to software design patterns and CSP concurrency design patterns to help them build applications in a more idiomatic, robust, and convenient way in Go. The book starts with a brief introduction to Go programming essentials and quickly moves on to explain the idea behind the creation of design patterns and how they appeared in the 90’s as a common "language" between developers to solve common tasks in object-oriented programming languages. You will then learn how to apply the 23 Gang of Four (GoF) design patterns in Go and also learn about CSP concurrency patterns, the "killer feature" in Go that has helped Google develop software to maintain thousands of servers. With all of this the book will enable you to understand and apply design patterns in an idiomatic way that will produce concise, readable, and maintainable software. Style and approach This book will teach widely used design patterns and best practices with Go in a step-by-step manner. The code will have detailed examples, to allow programmers to apply design patterns in their day-to-day coding.
目录展开

Go Design Patterns

Go Design Patterns

Credits

About the Author

About the Reviewer

www.PacktPub.com

Why subscribe?

Customer Feedback

Preface

What this book covers

What you need for this book

Who this book is for

Conventions

Reader feedback

Customer support

Downloading the example code

Errata

Piracy

Questions

1. Ready... Steady... Go!

A little bit of history

Installing Go

Linux

Go Linux advanced installation

Windows

Mac OS X

Setting the workspace - Linux and Apple OS X

Starting with Hello World

Integrated Development Environment - IDE

Types

Variables and constants

Operators

Flow control

The if... else statement

The switch statement

The for…range statement

Functions

What does a function look like?

What is an anonymous function?

Closures

Creating errors, handling errors and returning errors.

Function with undetermined number of parameters

Naming returned types

Arrays, slices, and maps

Arrays

Zero-initialization

Slices

Maps

Visibility

Zero-initialization

Pointers and structures

What is a pointer? Why are they good?

Structs

Interfaces

Interfaces - signing a contract

Testing and TDD

The testing package

What is TDD?

Libraries

The Go get tool

Managing JSON data

The encoding package

Go tools

The golint tool

The gofmt tool

The godoc tool

The goimport tool

Contributing to Go open source projects in GitHub

Summary

2. Creational Patterns - Singleton, Builder, Factory, Prototype, and Abstract Factory Design Patterns

Singleton design pattern - having a unique instance of a type in the entire program

Description

Objectives

Example - a unique counter

Requirements and acceptance criteria

Writing unit tests first

Implementation

A few words about the Singleton design pattern

Builder design pattern - reusing an algorithm to create many implementations of an interface

Description

Objectives

Example - vehicle manufacturing

Requirements and acceptance criteria

Unit test for the vehicle builder

Implementation

Wrapping up the Builder design pattern

Factory method - delegating the creation of different types of payments

Description

Objectives

The example - a factory of payment methods for a shop

Acceptance criteria

First unit test

Implementation

Upgrading the Debitcard method to a new platform

What we learned about the Factory method

Abstract Factory - a factory of factories

Description

The objectives

The vehicle factory example, again?

Acceptance criteria

Unit test

Implementation

A few lines about the Abstract Factory method

Prototype design pattern

Description

Objective

Example

Acceptance criteria

Unit test

Implementation

What we learned about the Prototype design pattern

Summary

3. Structural Patterns - Composite, Adapter, and Bridge Design Patterns

Composite design pattern

Description

Objectives

The swimmer and the fish

Requirements and acceptance criteria

Creating compositions

Binary Tree compositions

Composite pattern versus inheritance

Final words on the Composite pattern

Adapter design pattern

Description

Objectives

Using an incompatible interface with an Adapter object

Requirements and acceptance criteria

Unit testing our Printer adapter

Implementation

Examples of the Adapter pattern in Go's source code

What the Go source code tells us about the Adapter pattern

Bridge design pattern

Description

Objectives

Two printers and two ways of printing for each

Requirements and acceptance criteria

Unit testing the Bridge pattern

Implementation

Reuse everything with the Bridge pattern

Summary

4. Structural Patterns - Proxy, Facade, Decorator, and Flyweight Design Patterns

Proxy design pattern

Description

Objectives

Example

Acceptance criteria

Unit test

Implementation

Proxying around actions

Decorator design pattern

Description

Objectives

Example

Acceptance criteria

Unit test

Implementation

A real-life example - server middleware

Starting with the common interface, http.Handler

A few words about Go's structural typing

Summarizing the Decorator design pattern - Proxy versus Decorator

Facade design pattern

Description

Objectives

Example

Acceptance criteria

Unit test

Implementation

Library created with the Facade pattern

Flyweight design pattern

Description

Objectives

Example

Acceptance criteria

Basic structs and tests

Implementation

What's the difference between Singleton and Flyweight then?

Summary

5. Behavioral Patterns - Strategy, Chain of Responsibility, and Command Design Patterns

Strategy design pattern

Description

Objectives

Rendering images or text

Acceptance criteria

Implementation

Solving small issues in our library

Final words on the Strategy pattern

Chain of responsibility design pattern

Description

Objectives

A multi-logger chain

Unit test

Implementation

What about a closure?

Putting it together

Command design pattern

Description

Objectives

A simple queue

Acceptance criteria

Implementation

More examples

Chain of responsibility of commands

Rounding-up the Command pattern up

Summary

6. Behavioral Patterns - Template, Memento, and Interpreter Design Patterns

Template design pattern

Description

Objectives

Example - a simple algorithm with a deferred step

Requirements and acceptance criteria

Unit tests for the simple algorithm

Implementing the Template pattern

Anonymous functions

How to avoid modifications on the interface

Looking for the Template pattern in Go's source code

Summarizing the Template design pattern

Memento design pattern

Description

Objectives

A simple example with strings

Requirements and acceptance criteria

Unit test

Implementing the Memento pattern

Another example using the Command and Facade patterns

Last words on the Memento pattern

Interpreter design pattern

Description

Objectives

Example - a polish notation calculator

Acceptance criteria for the calculator

Unit test of some operations

Implementation

Complexity with the Interpreter design pattern

Interpreter pattern again - now using interfaces

The power of the Interpreter pattern

Summary

7. Behavioral Patterns - Visitor, State, Mediator, and Observer Design Patterns

Visitor design pattern

Description

Objectives

A log appender

Acceptance criteria

Unit tests

Implementation of Visitor pattern

Another example

Visitors to the rescue!

State design pattern

Description

Objectives

A small guess the number game

Acceptance criteria

Implementation of State pattern

A state to win and a state to lose

The game built using the State pattern

Mediator design pattern

Description

Objectives

A calculator

Acceptance criteria

Implementation

Uncoupling two types with the Mediator

Observer design pattern

Description

Objectives

The notifier

Acceptance criteria

Unit tests

Implementation

Summary

8. Introduction to Gos Concurrency

A little bit of history and theory

Concurrency versus parallelism

CSP versus actor-based concurrency

Goroutines

Our first Goroutine

Anonymous functions launched as new Goroutines

WaitGroups

Callbacks

Callback hell

Mutexes

An example with mutexes - concurrent counter

Presenting the race detector

Channels

Our first channel

Buffered channels

Directional channels

The select statement

Ranging over channels too!

Using it all - concurrent singleton

Unit test

Implementation

Summary

9. Concurrency Patterns - Barrier, Future, and Pipeline Design Patterns

Barrier concurrency pattern

Description

Objectives

An HTTP GET aggregator

Acceptance criteria

Unit test - integration

Implementation

Waiting for responses with the Barrier design pattern

Future design pattern

Description

Objectives

A simple asynchronous requester

Acceptance criteria

Unit tests

Implementation

Putting the Future together

Pipeline design pattern

Description

Objectives

A concurrent multi-operation

Acceptance criteria

Beginning with tests

Implementation

The list generator

Raising numbers to the power of 2

Final reduce operation

Launching the Pipeline pattern

Final words on the Pipeline pattern

Summary

10. Concurrency Patterns - Workers Pool and Publish/Subscriber Design Patterns

Workers pool

Description

Objectives

A pool of pipelines

Acceptance criteria

Implementation

The dispatcher

The pipeline

An app using the workers pool

No tests?

Wrapping up the Worker pool

Concurrent Publish/Subscriber design pattern

Description

Objectives

Example - a concurrent notifier

Acceptance criteria

Unit test

Testing subscriber

Testing publisher

Implementation

Implementing the publisher

Handling channels without race conditions

A few words on the concurrent Observer pattern

Summary

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部