python设计模式案例分析_python-patterns
发布日期:2021-06-24 11:40:45 浏览次数:2 分类:技术文章

本文共 4247 字,大约阅读时间需要 14 分钟。

python-patterns

A collection of design patterns and idioms in Python.

Current Patterns

Creational Patterns:

Pattern

Description

use a generic function with specific factories

a singleton with shared-state among instances

instead of using multiple constructors, builder object receives parameters and returns constructed objects

delegate a specialized function/method to create instances

lazily-evaluated property pattern in Python

preinstantiate and maintain a group of instances of the same type

use a factory and clones of a prototype for new instances (if instantiation is expensive)

Structural Patterns:

Pattern

Description

databusiness logicpresentation separation (strict relationships)

adapt one interface to another using a white-list

a client-provider middleman to soften interface changes

lets clients treat individual objects and compositions uniformly

wrap functionality with other functionality in order to affect outputs

use one class as an API to a number of others

transparently reuse existing instances of objects with similar/identical state

single handler requests coming to the application

modelviewcontroller (non-strict relationships)

an object funnels operations to something else

Behavioral Patterns:

Pattern

Description

apply a chain of successive handlers to try and process the data

general methods will call different specialized methods based on construction parameter

continue callback next object method

bundle a command and arguments to call later

traverse a container and access the container's elements

iterator (alt. impl.)

traverse a container and access the container's elements

an object that knows how to connect other objects and act as a proxy

generate an opaque token that can be used to go back to a previous state

provide a callback for notification of events/changes to data

a source syndicates events/data to 0+ registered listeners

keep track of all subclasses of a given class

business rules can be recombined by chaining the business rules together using boolean logic

logic is organized into a discrete number of potential states and the next state that can be transitioned to

selectable operations over the same data

an object imposes a structure but takes pluggable components

invoke a callback for all items of a collection

Design for Testability Patterns:

Pattern

Description

3 variants of dependency injection

Fundamental Patterns:

Pattern

Description

an object handles a request by delegating to a second object (the delegate)

Others:

Pattern

Description

architectural model, assemble different sub-system knowledge to build a solution, AI approach - non gang of four pattern

graphing algorithms - non gang of four pattern

hierarchical state machine - non gang of four pattern

Videos

Contributing

When an implementation is added or modified, please review the following guidelines:

Output

All files with example patterns have ### OUTPUT ### section at the bottom

(migration to OUTPUT = """...""" is in progress).

Run append_output.sh (e.g. ./append_output.sh borg.py) to generate/update it.

Docstrings

Add module level description in form of a docstring with links to corresponding references or other useful information.

Add "Examples in Python ecosystem" section if you know some. It shows how patterns could be applied to real-world problems.

facade.py has a good example of detailed description,

but sometimes the shorter one as in template.py would suffice.

In some cases class-level docstring with doctest would also help (see adapter.py)

but readable OUTPUT section is much better.

Python 2 compatibility

To see Python 2 compatible versions of some patterns please check-out the legacy tag.

Update README

When everything else is done - update corresponding part of README.

Travis CI

Please run tox or tox -e ci37 before submitting a patch to be sure your changes will pass CI.

You can also run flake8 or pytest commands manually. Examples can be found in tox.ini.

Contributing via issue triage users.svg

You can triage issues and pull requests which may include reproducing bug reports or asking for vital information, such as version numbers or reproduction instructions. If you would like to start triaging issues, one easy way to get started is to subscribe to python-patterns on CodeTriage.

转载地址:https://blog.csdn.net/weixin_32553639/article/details/112991050 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:shell散点图_Matplotlib中的散点图轮廓
下一篇:计算机二级access选择题题库_2019计算机二级access真题题库试题精选(附答案)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月08日 02时45分22秒