6.设计模式-python
Python常见的设计模式
小Pawn爷
Python菜鸟
展开
-
1.Python 设计模式
封装,继承,多态定义:若干抽象方法的集合作用:限制实现接口的类,必须按照接口给定的调用方式实现这些方法,对高层模块隐藏了类的内部实现。原创 2022-08-20 16:46:42 · 218 阅读 · 0 评论 -
2.python_创建型模式_工厂模式
12定义定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行应用场景1、日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。2、数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。3、设计一个连接服务器的框架,需要三个协议,“POP3”、“IMAP”、“HTTP”,可以把这三个作为产品类,共同实现一个接口。角色抽象工厂角色(creator),具体工厂角色(concrete creator)原创 2022-08-20 16:59:33 · 187 阅读 · 0 评论 -
3.Python_创建型模式_抽象工厂模式
12定义提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类应用场景1、QQ 换皮肤,一整套一起换。2、生成不同操作系统的程序。角色抽象工厂角色(creator)具体工厂角色(concrete creator)多个抽象产品角色(product)具体产品角色(concrete product)客户端(client)优点当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象缺点。原创 2022-08-21 11:40:37 · 283 阅读 · 0 评论 -
4.Python_创建型模式_建造者模式
12定义使用多个简单的对象一步一步构建成一个复杂的对象应用场景1、去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐角色抽象建造者(Builder)具体建造者(Concrete Builder)指挥者(Director)产品(product)优点1.隐藏了一个产品的内部结构和装配过程2.将构造代码与表示代码分开3.可以对构造过程进行更精细的控制注意。原创 2022-08-21 13:52:34 · 142 阅读 · 0 评论 -
5.Python_创建型模式_单例模式
12定义一个类只能被单个对象创建应用场景1.要求生产唯一序列号2.WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来3.创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。角色单例基类,需要实现单例类优点1.在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)2.避免对资源的多重占用(比如写文件操作)。缺点没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑.而不关心外面怎么样来实例化。原创 2021-09-15 22:21:12 · 84 阅读 · 0 评论 -
6.Python_结构型模式_适配器模式
12定义将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作应用场景1.JAVA 中的 jdbc2在linux上运行windows程序角色目标接口(Target),待适配的类(Adaptee),适配器(Adapter)😗*类适配器:**使用多继承,**对象适配器:**使用组合优点1.可以让任何两个没有关联的类一起运行2.提高了类的复用3.增加了类的透明度4.灵活性好缺点。原创 2022-08-21 15:22:29 · 86 阅读 · 0 评论 -
7.Python_结构型模式_桥模式
12定义将抽象部分与实现部分解耦,使它们都可以独立的变化角色抽象Shape细化抽象(RefnedAbstraction) :长方形,圆形实现者Color具体实现者(ConcreImplementor):红色,蓝色优点1.抽象和实现的分离.2,优秀的扩展能力, 3,实现细节对客户透明。缺点桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程应用场景。原创 2022-08-21 15:28:39 · 193 阅读 · 1 评论 -
8.Python_结构型模式_组合模式
12定义将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性角色抽象组件Graphic叶子组件Point复核组件客户端(Client)优点1.定义了包含基本对象和组合对象的类层次结构2.简化客户端代码,即客户端可以一致地使用组合对象和单个对象3.更容易增加新的类型缺点在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则应用场景部分、整体场景,如1.点,线,面2.树形菜单,文件,文件夹的管理。原创 2022-08-21 21:44:44 · 64 阅读 · 0 评论 -
9.Python_结构型模式_外观模式
12定义为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用角色外观子系统类优点1.减少系统相互依赖,子系统相对独立2.提高灵活性.3.提高了安全性,为复杂的模块或子系统提供外界访问的模块,预防低水平人员带来的风险缺点不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。应用场景1.去医院看病,可能要去挂号,门诊,划价,取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便.2.JAVA 的三层开发模式。原创 2022-08-21 21:55:29 · 136 阅读 · 0 评论 -
10.Python_结构型模式_代理模式
12定义为对象提供一种代理以控制这种对象角色抽象实体(Subject)实体(RealSubject)代理(Proxy)优点**远程代理:**可以隐藏对象位于远程地址空间的事实可以进行优化,例如根据需求创建对象**保护代理:**允许在访问一个对象的时候有一些附加的内务处理缺点1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂应用场景按职责来划分,通常有以下使用场景:1.远程代理。原创 2022-08-22 08:07:19 · 92 阅读 · 0 评论 -
11.Python_结构型模式_责任链模式
12定义避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止角色抽象处理者(Handler)(Client)优点1.降低耦合度,它将请求的发送者和接收者解耦.2.简化了对象,使得对象不需要知道链的结构.3.增强给对象指派职责的灵活性.通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。4.增加新的请求处理类很方便缺点1,不能保证请求一定被接收。原创 2022-08-22 08:12:48 · 84 阅读 · 0 评论 -
12.Python_行为型模式_模板方法
12定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤角色(AbstractClass) 定义抽象的原子操作(钩子操作),实现一个模板方法作为算法的骨架(ConcreteClass) 实现原子操作优点1、封装不变部分,扩展可变部分。2、提取公共代码,便于维护。3、行为由父类控制,子类实现缺点1.每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大应用场景1、有多个子类共有的方法,且逻辑相同。原创 2022-08-22 08:31:15 · 220 阅读 · 0 评论 -
12.Python_行为型模式_观察者模式
12定义定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新角色(Subject)优点1,观察者和被观察者是抽象耦合的. 2,建立一套触发机制。缺点1,如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。2,如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。3,观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。原创 2022-08-22 08:17:24 · 258 阅读 · 0 评论 -
13.Python_行为型模式_策略模型
12定义一个类的行为或其算法可以在运行时更改角色(Strategy)(Context)优点1.算法可以自由切换。2.避免使用多重条件判断。3.扩展性良好。缺点1.策略类会增多。2.所有策略类都需要对外暴露。**注意事项:**如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题应用场景1,如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。2,一个系统需要动态地在几种算法中选择一种。原创 2022-08-22 08:29:01 · 110 阅读 · 0 评论