Go Patterns

Curated list of Go design patterns, recipes and idioms

Github星跟踪图

A curated collection of idiomatic design & application patterns for Go language.

Creational Patterns, Pattern, Description, Status, :-------:, :-----------, :------:, Abstract Factory, Provides an interface for creating families of releated objects, ✘, Builder, Builds a complex object using simple objects, ✔, Factory Method, Defers instantiation of an object to a specialized function for creating instances, ✔, Object Pool, Instantiates and maintains a group of objects instances of the same type, ✔, Singleton, Restricts instantiation of a type to one object, ✔, ## Structural Patterns, Pattern, Description, Status, :-------:, :-----------, :------:, Bridge, Decouples an interface from its implementation so that the two can vary independently, ✘, Composite, Encapsulates and provides access to a number of different objects, ✘, Decorator, Adds behavior to an object, statically or dynamically, ✔, Facade, Uses one type as an API to a number of others, ✘, Flyweight, Reuses existing instances of objects with similar/identical state to minimize resource usage, ✘, Proxy, Provides a surrogate for an object to control it's actions, ✔, ## Behavioral Patterns, Pattern, Description, Status, :-------:, :-----------, :------:, Chain of Responsibility, Avoids coupling a sender to receiver by giving more than object a chance to handle the request, ✘, Command, Bundles a command and arguments to call later, ✘, Mediator, Connects objects and acts as a proxy, ✘, Memento, Generate an opaque token that can be used to go back to a previous state, ✘, Observer, Provide a callback for notification of events/changes to data, ✔, Registry, Keep track of all subclasses of a given class, ✘, State, Encapsulates varying behavior for the same object based on its internal state, ✘, Strategy, Enables an algorithm's behavior to be selected at runtime, ✔, Template, Defines a skeleton class which defers some methods to subclasses, ✘, Visitor, Separates an algorithm from an object on which it operates, ✘, ## Synchronization Patterns, Pattern, Description, Status, :-------:, :-----------, :------:, Condition Variable, Provides a mechanism for threads to temporarily give up access in order to wait for some condition, ✘, Lock/Mutex, Enforces mutual exclusion limit on a resource to gain exclusive access, ✘, Monitor, Combination of mutex and condition variable patterns, ✘, Read-Write Lock, Allows parallel read access, but only exclusive access on write operations to a resource, ✘, Semaphore, Allows controlling access to a common resource, ✔, ## Concurrency Patterns, Pattern, Description, Status, :-------:, :-----------, :------:, N-Barrier, Prevents a process from proceeding until all N processes reach to the barrier, ✘, Bounded Parallelism, Completes large number of independent tasks with resource limits, ✔, Broadcast, Transfers a message to all recipients simultaneously, ✘, Coroutines, Subroutines that allow suspending and resuming execution at certain locations, ✘, Generators, Yields a sequence of values one at a time, ✔, Reactor, Demultiplexes service requests delivered concurrently to a service handler and dispatches them syncronously to the associated request handlers, ✘, Parallelism, Completes large number of independent tasks, ✔, Producer Consumer, Separates tasks from task executions, ✘, ## Messaging Patterns, Pattern, Description, Status, :-------:, :-----------, :------:, Fan-In, Funnels tasks to a work sink (e.g. server), ✔, Fan-Out, Distributes tasks among workers (e.g. producer), ✔, Futures & Promises, Acts as a place-holder of a result that is initially unknown for synchronization purposes, ✘, Publish/Subscribe, Passes information to a collection of recipients who subscribed to a topic, ✔, Push & Pull, Distributes messages to multiple workers, arranged in a pipeline, ✘, ## Stability Patterns, Pattern, Description, Status, :-------:, :-----------, :------:, Bulkheads, Enforces a principle of failure containment (i.e. prevents cascading failures), ✘, Circuit-Breaker, Stops the flow of the requests when requests are likely to fail, ✔, Deadline, Allows clients to stop waiting for a response once the probability of response becomes low (e.g. after waiting 10 seconds for a page refresh), ✘, Fail-Fast, Checks the availability of required resources at the start of a request and fails if the requirements are not satisfied, ✘, Handshaking, Asks a component if it can take any more load, if it can't, the request is declined, ✘, Steady-State, For every service that accumulates a resource, some other service must recycle that resource, ✘, ## Profiling Patterns, Pattern, Description, Status, :-------:, :-----------, :------:, Timing Functions, Wraps a function and logs the execution, ✔, ## Idioms, Pattern, Description, Status, :-------:, :-----------, :------:, Functional Options, Allows creating clean APIs with sane defaults and idiomatic overrides, ✔, ## Anti-Patterns, Pattern, Description, Status, :-------:, :-----------, :------:, Cascading Failures, A failure in a system of interconnected parts in which the failure of a part causes a domino effect, ✘

概览

名称与所有者tmrts/go-patterns
主编程语言Go
编程语言Go (语言数: 1)
平台
许可证Apache License 2.0
发布数0
创建于2015-12-14 22:05:06
推送于2024-05-14 01:07:28
最后一次提交2017-07-19 13:41:46
星数24.3k
关注者数615
派生数2.2k
提交数72
已启用问题?
问题数30
打开的问题数17
拉请求数10
打开的拉请求数46
关闭的拉请求数37
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?
去到顶部