zoukankan      html  css  js  c++  java
  • 设计模式学习(待续)

    1、简单工厂模式。

        用一个单独的类(工厂)来封装实例的创建过程。

    2、策略模式。

        定义算法家族,将他们封装起来,使得算法的变化不影响客户的使用。也就是说,策略模式封装了变化。在实践中,它几乎可以封装几乎任何类型的规则,只要在分析中发现要在不同时间应用不同的业务规则,就可以考虑应用这种模式来处理。

        在基本的策略模式中,选择的具体实现还是要由客户端实现,并转给策略对象context。但是通过将策略模式与简单工厂模式组合,选择的具体职责也可由context来完成,这样就可以最大化减轻客户端的职责了。(据说还可以利用反射机制为context减负,以最小化需求变更引起的代码更改)

    3、单一职责原则(对一个类而言,仅有一个引起它变化的原因);

        开放-封闭原则(对于扩展开放,对于更改封闭,是面向对象的核心所在);

        依赖倒转原则(高层模块不用依赖于底层模块,两个都依赖于抽象;抽象不应依赖细节,细节应该依赖抽象。该原则是面向对象的标志,程序中所有依赖关系都终止于抽象类或者接口,那么就是面向对象的设计了;反之,就是面向过程的设计了);

        里氏代换原则(子类型必须能替换掉他们的父类型,只有这样,父类才能够被复用,子类才能在父类的基础上增加新的行为。该原则使得使用父类型的模块在无需修改的情况下就可以扩展,即“开放-封闭原则”成为可能);

    4、装饰模式(有效地把类的核心功能和装饰功能区分开了,可以去除相关类中重复的装饰逻辑)。

    5、代理模式(为其它对象提供一种代理以控制对这个对象的访问)。

    6、工厂方法模式(相比与简单工厂模式,符合了开放-封闭原则,将选择判断从简单工厂的内部移到了客户端)。

    7、原型模式。

    锄禾日当午,不如coding苦~
  • 相关阅读:
    leetcode 13. Roman to Integer
    python 判断是否为有效域名
    leetcode 169. Majority Element
    leetcode 733. Flood Fill
    最大信息系数——检测变量之间非线性相关性
    leetcode 453. Minimum Moves to Equal Array Elements
    leetcode 492. Construct the Rectangle
    leetcode 598. Range Addition II
    leetcode 349. Intersection of Two Arrays
    leetcode 171. Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/wangzhigang/p/3719150.html
Copyright © 2011-2022 走看看