设计模式—扫盲篇

学习设计模式之前,先来认真了解一下设计模式:


1、什么是模式?

       每个模式描述了一个问题,该问题反复在我们的周围出现,每个模式给出了对该问题的核心解决方法,因此,人们可以反复使用给解决方法解决类似问题。


2、为什么学习模式?

   模式帮助我们学习他们成功的经验,从而避免失误。

   Design Pattern为软件设计总结了宝贵的经验,这些设计经验可以被重用,并不是简单的代码重用。


3、指导模式设计的三个重要概念:

   (1)重用(reuse):是目标

        两种重要的重用手段:Inheritance&composition

   (2)接口与现实分离

        接口保持不变,分离带来灵活性。

        多态性(polymorphism

   (3)Decouple(解耦)

        降低复杂性。


4、设计模式是什么?

    设计模式是软件工程的基石,使代码编制真正工程化。设计模式反复被使用,因为它的代码可重用性,让代码更容易被他人理解、保证代码可靠性。

 

5、怎样实现代码的复用?

  • 单一职原则:就一个类而言,应该仅有一个引起它变化的原则。
  • 开放—封闭原则:对于扩展是开放的,对于更改是封闭的
  • 里氏代换原则:子类型必须能够替换掉它们的父类型。
  • 依赖倒转原则:针对接口编程,不要对实现编程
  • 迪米特法则:也叫最少知识原则,强调了类之间的松耦合
  • 合成/聚合复用原则:在一个新的对象里面使用一些已有的对戏那个,使之成为新对象的一部分,新的对象通过向这些对的委派达到复用已有功能的目的。尽量使用合成/聚合,尽量不要使用继承。

 设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。

 

6、一些基本的设计模式

 设计模式分为三种类型,23.

 创建型模式(CreationalPatters:

  • 工厂方法(FactoryMethod)用一个virtual method完成创建过程。
  • 抽象工厂(AbstractFactory:提供一个创建一些类相关或相互依赖对象的接口,而无需指定它们具体的类。
  • 单件(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
  • 生成器(Builder):通过一个构造算法和builder接口把构造过程和客户隔离开。
  • 原型(Prototype)建造者模式、工厂模式、原型模式。

 

结构型模式(Structuralpatterns):

  • 装饰者(Decorator):动态的给一个对象添加一些额外的职责。就扩展功能而言,他比生成子类方式更为灵活
  • 适配器(Adapter):将一个类的接口转换成客户希望的另外一个接口。
  • 外观(Facade):为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
  • 组合(Composite):将对象组合成树形结构以表示“整体—部分”的层次结构。使得客户对单个对象和符合对象的使用具有一致性。
  • 代理(Proxy):为其他对象提供一个代理以控制对这个对象的访问。
  • 桥接(Build):将抽象部分与他的实现部分分离,使他们都可以独立地变化。
  • 享元(Flyweight):运用共享技术有效地支持大量细粒度的对象。

 

行为模式(Behavioral  Patterns):

  • 策略(Strategy):定义一些类算法,把他们一个个封装起来,并且使他们可相互替换。
  • 观察者(Observer):定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
  •  命令(Command):用对象封装命令,使得命令可以被传递、记录、排队等。
  •  模板方法(TemplateMethod):在基类中定义算法的骨架,把某些细节延迟到子类中。
  •  迭代器(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
  • 状态(State):允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。
  • 职责链(Chain of Responsibility):请求的处理过程,沿着链传递,decouple(解耦)发送方和接收方。
  • 解释器(Interpreter):在类层次结构中,在特定环境的“interpret”过程
  • 中介者(Mediator):用一个mediatordecouple各同等单元。
  • 备忘录(Memo):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
  • 访问者(VIsitor):把对一个结构模型的操作单独组织到一个类中。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值