摘要:在画类图的时候,理清类和类之间的关系是重点。类之间关系耦合度降序排列:泛化,实现,组合,聚合,一般关联,依赖。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。1.泛化(generalization):表示is-a的关系,是对象之间耦合度最大的一种关系,子类继承父类的所有细节。 直接使用语言中的继承表达。在类图中使用带三角箭头的实线表示,箭头从子类指向父类。2.实现(Realization):在类图中就是
阅读全文
摘要:Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。代码1://送礼物 interface GiveGift { void GiveDolls(); void GiveFlowers(); void GiveChocolate(); } //代理 cla...
阅读全文
摘要:Decorator装饰模式是一种结构型模式,它主要是解决:“过度地使用了继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀(多继承)。继承为类型引入的静态特质的意思是说以继承的方式使某一类型要获得功能是在编译时。所谓静态,是指在编译时;动态,是指在运行时。GoF《设计模式》中说道:动态的给一个对象添加一些额外的职责。就增加功能而言,Decorator模式比生成子类更为灵活。代码1:被装饰的对象public abstract class AbstractCellPhone .
阅读全文
摘要:策略模式跟简单工厂模式大致相同,不同的是策略模式中的上下文类会包含策略父类。代码1:策略抽象部分using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 策略模式{ /// /// 现金收取父类 /// abstract class BaseCash { //抽象方法:收取现金,参数为原价,返回为当前价 public abstract double acceptCash(double money); }...
阅读全文
摘要:简单工厂:抽象产品,工厂没有抽象出来。工厂方法:抽象产品,抽象工厂。抽象工厂:抽象多种产品,抽象工厂。代码1:工厂抽象部分using System;using System.Collections.Generic;using System.Text;using System.Reflection;using System.Configuration;namespace AbstractFactory{ /// /// 抽象工厂 /// public abstract class AbstractClothesFactory { //抽象方法:创建...
阅读全文
摘要:using System;using System.Collections.Generic;using System.Text;/* * 工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现‘开-闭 原则’,实现了可扩展。 * 其次更复杂的层次结构,可以应用于产品结果复杂的场合。 * 工厂方法模式的对简单工厂模式进行了抽象。 * 有一个抽象的Factory类(可以是抽象类和接口),这个类将不再负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。 * 在这个模式中,工厂类和产品类往往可以依次对应。 * 即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个
阅读全文
摘要:using System;using System.Collections.Generic;using System.Text;/* *设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。 *简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 *简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 *简单工厂 */namespace 简单工厂_计算器{ /// /// 运算类 /// public class Oper...
阅读全文
摘要:定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。类型:行为类模式类图: /// /// 模拟if else 判定条件 /// class Level { private int _level = 0; public Level(int level) { this._level = level; } /// /// 判定当前条件层级是否高于给定的条件 ...
阅读全文