随笔分类 - 设计模式
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace JackYong.Observer{ /// <summary> /// 观察者 /// </summary> public interface ObServer { /// <summary> /// 当气象观测值改变时,主题会把这些状态值当作方法的参数,传送给观察者,所有的观察者都必须实现update()方法,以实现观测者接口,在这里我们按照mary 和sue的想法把观测值
阅读全文
摘要:概述 Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任。 从另一个角度来说,Singleton模式其实也是一种职责型模式。因为我们创建了一个对象,这个对象扮演了独一无二的角色,在这个单独的对象实例中,它集中了它所属类的所有权力,同时它也肩负了行使这种权力的职责! 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 模型图 逻辑模型图: 物理模型图: 生活中
阅读全文
摘要:Command 模式 Step by step引言提起Command模式,我想没有什么比遥控器的例子更能说明问题了,本文将通过它来一步步实现GOF的Command模式。我们先看下这个遥控器程序的需求:假如我们需要为家里的电器设计一个远程遥控器,通过这个控制器,我们可以控制电器(诸如灯、风扇、空调等)的开关。我们的控制器上有一系列的按钮,分别对应家中的某个电器,当我们在遥控器上按下“On”时,电器打开;当我们按下“Off”时,电器关闭。好了,让我们开始Command 模式之旅吧。HardCoding的实现方式控制器的实现一般来说,考虑问题通常有两种方式:从最复杂的情况考虑,也就是尽可能的深谋远虑
阅读全文
摘要:学习策略模式的时候看到这篇文章感觉不错,这里记录下,作者使用了角色的技能来讲解,其实在游戏里面,我想这种应该是用枚举来实现的,一个骑士可以用任何武器,灵活的应用吧,可能他这里是为了讲解策略模式。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace JackYong.Strategy.Solution{ public enum UserSkill { Sword, Axe, Nothing, Weapon }}策略模式代码:using System;using Sy.
阅读全文