码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式笔记

时间:2016-09-19 22:17:04      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

一、策略模式

策略模式可以说是一种相当常用的模式,其主要思路是:面向接口设计,尽可能保证方法的可扩展性。

派生类的同时,派生正确的方法,而不是重写已有的方法——可能导致已有实现的改变,这是我们不想看到的。

 

若类A中有一个方法fa(),而该方法fa()可能有多种实现,这些实现有些已知,而有些可能还要后续进行扩展,那么策略模式就是:将该方法fa()进行封装,得到接口类FA,然后再对FA进行派生,得到所需的类:FA_a、FA_b……,而这些类中是方法fa的已知的实现fa_a、fa_b……,这样在类A中包含一个接口类FA的实例后,对类A进行实例化时,可以动态选择方法fa()的实现。

 

要点包括:

  将对象的方法进行分类(按照可变/不变的属性),将不变的独立出来,作为基类中的方法;可变的方法抽象为接口,通过在基类中创建该方法的实例来对该方法进行调用,然后在基类的继承时,选择不同的接口来实现该方法多样性的同时,可以达到尽可能复用的目的。

注意:

  可变与不变不是固定的,需要按照当时需求认真分析,面对多变的需求要尽量多使用接口抽象,面对固定需求可以适当将实现放在基类。

  基类也有可能需要使用接口,当基类本身也具有多变性时,可以尝试将基类也设计成为接口。

二、观察者模式

观察者模式定义了一种对象之间的“一对多”的以来关系,这种关系是松耦合的,当一个对象的状态改变时,所有依赖于该对象的对象都会收到该状态改变的通知。(“发布者”与“订阅者”的关系。)

要点:

  首先,对于发布者来说,发布者需要包含一个订阅了该发布者的所有订阅者的列表,并包含一个可以让订阅者订阅和解除订阅该对象的方法,最重要的还要有一个通知状态改变的方法。

  其次,对于订阅者来说,发布者状态改变时,订阅者可以对于该变化有一个特有的动作(即方法)。

使用:

  在实现订阅者和发布者的接口后,若需要使用该模式,可分别对发布者和订阅者进行继承。

设计模式笔记

标签:

原文地址:http://www.cnblogs.com/kanglb0855/p/5878932.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!