随笔分类 - 设计模式
摘要:外观模式: 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易调用。Demo: classProgram {static void Main(string[] args){Home h = new Home();h.InHome();h.OutHome();Console.ReadKey();} }//外观模式class Home {Key key;D...
阅读全文
摘要:建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时适用的模式。Demo: //控制类class Director {private F f;public Director(F f){this.f = f;}public void createF() {f.f1();f.f2();f.f3();} }...
阅读全文
摘要:模板方法: 定义一个操作的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。Demo1: classquestion {public void ShowQ(){Console.WriteLine("问题:");Console.WriteLine("答案:"+ShowA());}public virtual string ShowA(){r...
阅读全文
摘要:原型模式: 在A a=new A();A b=a;是传引用而不是传值引用。 我们在A中加入clone()方法,使其传值。这就是原型//原型类abstract class Prototype {private string id;public Prototype(string id){this.id = id;}public string Id{ get { return id; }}//抽象类的关...
阅读全文
摘要:工厂方法模式: 定义一个用于创建对象的接口,让子类决定实例化哪一个类 把选择放到了客户端。 与简单工厂的区别:克服简单工厂违背开放——封闭原则的缺点 简单工厂的最大优点在工厂中包含必要的逻辑判断,根据客户端的传入条件动态选择实例化的类,对客户端来说去除了与具体产品的依赖。实体和具体方法:class Operation {string num1 = string.Empty;...
阅读全文
摘要:代理模式: 隐藏真实模块。方法: //抽象类abstract class Subject {public abstract void Request(); }//真实实现类class RealSubject : Subject {public override void Request(){Console.WriteLine("真实的请求");} }//代理类class Proxy : Subje...
阅读全文
摘要:装饰模式: 为已有功能动态的添加更多的功能。 如果没有抽象实体,装饰类直接继承实体。 如果只有一个装饰实体,可以将装饰实体与抽象装饰类合并。???装饰类: //装饰类abstract class Decorator : Component {protected Component component;public void SetComponent(Component component){thi...
阅读全文
摘要:工厂与策略结合: 将工厂模式与策略模式结合使用: 工厂模式:——客户端需要用到工厂和方法类传入参数判断选择实体类型返回实例化的类型 策略模式:——客户端需要用到策略和方法类 传入的是(已经判断选择的实例化的)实体类型 声明一个方法,调用实体的方法 客户端调用策略类的这个 结合后:——客户端只需用到工厂策略类 传入参数 判断选择...
阅读全文
摘要:策略模式: 与工厂不同的是,工厂是: 工厂类接受参数,实例化具体的类,返回类 策略模式是:接受具体的实例化类,仅将方法赋予策略类策略模式类:class CashContext {private CashSuper cs;public CashContext(CashSuper csuper){this.cs = csuper;}public double GetResult(double mont...
阅读全文
摘要:抽象类抽象方法: 关键字:abstract 抽象类,抽象方法只有方法声明,没有实现。??? 可用于简单工厂的实现定义抽象类,抽象方法:abstract class CashSuper {public abstract double acceptCash(double money);}使用抽象类抽象方法://正常收费class CashNormal : CashSuper {public overr...
阅读全文
摘要:接口: 关键字:interface 接口方法只有方法声明。?抽象? 类使用继承接口,重新声明与接口一样的方法,并且有实现。 类是对对象的抽象 接口是对行为的抽象 抽象类是对类的抽象继承:子类拥有父类非private的属性和功能Protected表示子类可以继承父类的方法或属性,但不对其他类公开构造方法不能被继承,可以使用base关键字调用定义接口:public interface ICalcula...
阅读全文
摘要:简单工厂: 简单工厂处理的是如何选择我们override的虚方法。public virtualdouble GetResult() { double result=0; return result; }不一定是虚方法,抽象方法也可以:abstract classCashSuper { public abstract doubleacceptCash(double money);}父类,虚方法和子类...
阅读全文
摘要:虚方法: Virtual关键字 在继承含有虚方法类的时候,子类用override重写class Operate {private double _num1;private double _num2;public double Num1{get { return _num1; }set { _num1 = value; }}public double Num2{get { return _num2;...
阅读全文
摘要:今天开学,大四了。之前因为有压力,所以疯狂学习软件的相关知识。虽有盲目追求新技术的错误认识,但也确实努力很多。其他的不讲,但说微软的.net系列:ado.net,asp.net,jQuery,LinQ,Ajax.net,WCF,Silverlight,WPF..... 相信很多朋友学过这些,因为这几乎是微软近年来相当流行的几种技术。所有的技术入门时候,几乎都在用“Hello Worl...
阅读全文