随笔分类 - C#
摘要:一.介绍 模板方法模式(Template Pattern)。属于行为型模式。它定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 二.实现 一说到模板,就能想到这是个现有的,可以直接套用的东西。举个例子,我们去开车,不管开什么
阅读全文
摘要:一.介绍 策略模式(Stragety Pattern)。属于行为型模式。它定义了算法(行为)家族,分别封装起来,使得它们之间可以相互替换,此模型让算法(行为)的变化,不会影响到使用该算法(行为)的客户。 二.实现 举个例子,一辆车(Car类)里有轮胎(Tyre类)才能跑(Run),不同情况需要使用不
阅读全文
摘要:一.介绍 享元模式(Flyweight Pattern)。属于结构型模式。运用共享技术有效地支持大量细粒度的对象。 二.实现 当我们需要重复使用一个对象的时候,如果重复创建对象,会让内存消耗越来越大。能不能创建了第一次之后,如果需要再次使用,再直接使用之前已经创建的对象呢。让一个对象可以共享,享元模
阅读全文
摘要:一.介绍 组合模式(Composite Pattern)。属于结构型模式。将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 二.实现 举个例子,我们写前端有用上html标签(抽象构件),这个标签分为双标签(树枝构件)和单标签(树叶构件),在写
阅读全文
摘要:一.介绍 桥接模式(Bridge Pattern)。属于结构型模式。将抽象部分与它的实现部分分离,使得它们可以独立地变化。 二.实现 举个例子,魔术师的法杖可以用口令施展法术攻击,有火法杖和冰法杖,法杖可以施展射击。法杖可以定为Wand抽象类,火法杖和冰法杖来继承抽象,这样火法杖和冰法杖就能实现射击
阅读全文
摘要:一.介绍 外观模式(Facade Pattern),也叫门面模式。属于结构型模式。为子系统中的一系列接口提供一个一致的界面,该模式提供了一个高层接口,这个接口使得这一子系统更加容易使用。 二.实现 外观模式是通过定义一个外观类将子类包装起来,来简化客户端所调用的方法。 /// <summary> /
阅读全文
摘要:一.介绍 代理模式(Proxy Pattern)。属于结构型模式。为其它对象提供一种代理以控制对该对象的访问。 二.实现 代理的概念很简单,就是想调用A类方法时,不直接调用,而是通过调用代理B类的方法,由B类方法去调用A类的方法。 /// <summary> /// 抽象主题角色 /// </sum
阅读全文
摘要:一.介绍 装饰者模式(Decorator Pattern)。属于结构型模式。动态地给一个对象添加额外的职责,就增加功能来说,装饰者模式比添加子类更为灵活。 二.实现 举个例子,定义一个类是一个人,那这个人能够打拳,一拳出来就可以造成物理伤害。后来这个人得到了一套外挂,用了外挂后,一拳出来不光可以造成
阅读全文
摘要:一.介绍 适配器模式(Adapter Pattern)。属于结构型模式。将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本因为接口不兼容而不能一起工作的那些类可以一起工作。 二.实现 客户调用Adaptee类的时候,希望Adaptee类可以提供一个指定名称的Request方法,而A
阅读全文
摘要:一.介绍 原型模式(Prototype Pattern)。属于创建型模式。用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的对象。 二.实现 简单来说,原型模式可以直接复制一个现有的对象,而不需要重新new操作去创建。这种创建分两种方式,浅拷贝和深拷贝。 1.浅拷贝 定义一个接口IPerso
阅读全文
摘要:一.介绍 建造者模式(Singleton Pattern)。属于创建型模式。将一个复杂对象的创建和它的表示分离,使得同样的构建过程可以创建不同的表示。 二.实现 举个例子,客户去买电脑,都是和电脑店的老板直接沟通的,然后老板再安排装机人员去安装电脑,最后安装完成就可以出货。这个流程符合用建造者模式去
阅读全文
摘要:一.介绍 单例模式(Singleton Pattern)。属于创建型模式。它保证一个类仅有一个实例,并提供一个访问它的全局访问点。 二.实现 结构为,一个私有的静态变量,用于存放该实例。私有的构造函数,防止外部直接创建该类实例。 创建单例模式有两种方式。饿汉式和懒汉式。 饿汉式是直接在程序中初始化一
阅读全文
摘要:一.介绍 抽象工厂模式(Abstract Factory Pattern)。属于创建型模式。它提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 二.场景 仍然是举例之前工厂模式使用的买水果例子。我们(调用方)去水果店(工厂接口)买水果,不同水果有不同的售货员(工厂类)负责,我们只
阅读全文
摘要:一.介绍 工厂方法模式(Factory Method Pattern)。属于创建型模式。定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 二.场景 比如我们去水果店买水果,我们只要说出要买什么水果,水果店就会给我们什么水果。这里的水果店相当于一个工厂接口,
阅读全文
摘要:一.介绍 简单工厂模式(Simple Factory Pattern)又叫静态工厂方法(Static Factory Method)模式。它属于创建型模式,但它不属于23种设计模式的一种。简单来说,它的作用就是将类的实例化交给一个工厂类去执行。 二.场景 比如我们去水果店买水果,我们只要说出要买什么
阅读全文
摘要:迪米特法则(Law of Demeter)又叫最少知道原则(Interface Segregation Principle)。 一个对象应该对其它对象有尽可能少的理解;比如有一个A类,A类肯定对自身的属性和方法是熟悉的;如果A类的方法传参的是B类,那么A类对B类也是熟悉;在A类中直接实例化一个C类,
阅读全文
摘要:接口隔离原则,全称Interface Segregation Principle,英文缩写ISP。 客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 满足接口隔离原则的前提就是接口设计得不应该过于庞大。举个例子,现在设计一个动物animal接口,动物应该都会跑步的。 p
阅读全文
摘要:里氏替换原则,全称Liskov Substitution Principle,英文缩写LSP。 一个程序中如果使用的是一个父类,那么该程序一定适用于其子类,而且程序察觉不出父类和子类对象的区别。也就是说在程序中,把父类替换成它的子类,程序的行为没有任何变化。 关于里氏替换原则的反例有不少,举个例子,
阅读全文
摘要:依赖倒置原则,全称Dependence Inversion Principle,英文缩写DIP。 主程序要依赖于抽象接口,不要依赖于具体实现。高层模块不应该依赖底层模块,两者都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。 简单地理解一下这话的意思。 依赖说的就是耦合性,如果A类依赖于B类,当
阅读全文
摘要:开闭原则,全称Open Closed Principle,英文缩写OCP。 软件中的对象(类、模块、函数等)应该是对于拓展是开放的,而对于修改是封闭的。 当一个模块需要修改的时候,我们不应该直接修改源代码,这样有可能对现有的工作造成影响。应该通过拓展来加需求。一开始就可以把功能模块抽象出来,如果确定
阅读全文

浙公网安备 33010602011771号