设计模式
杰锅就是爱情
这个作者很懒,什么都没留下…
展开
-
设计模式之迪米特法则
c#迪米特法则1.出处设计模式六大原则2.定义迪米特法则(LOD):也叫最少知识原则。 如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某个方法的话,直接通过第三者转发这个调用。 迪米特法则首先强调的前提是在类的结构设计上,每一个类都应当降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开转载 2017-08-31 21:59:21 · 332 阅读 · 0 评论 -
设计模式之模板方法模式
c#模板方法模式1.定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。2.实现原理1.UML类图: 2.代码实现: abstract class AbstractClass { //父类中定义一些抽象行为 放到子类中去实现 public abstract void Pri原创 2017-08-30 20:06:03 · 176 阅读 · 0 评论 -
设计模式之原型模式
c#原型模式1、定义用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要任何创建的细节。2、深复制和浅复制1.深复制:把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象 2.被复制对象的所有对象都含有与原来对象相同的值,而所有的对其他对象的引用都任然指向原来的对象3、实现原理UML类图 2.代码实现原创 2017-08-24 13:46:07 · 158 阅读 · 0 评论 -
设计模式之工厂方法模式
c#工厂方法模式1、定义定义一个用于创建对象的接口,让子类决定实例化那个类。工厂方法使一个类的实例化延迟到其子类。2、实现原理2.1. 介绍工厂方法模式首先得提一提简单工厂方法: 简单工厂模式最大的优点在于工厂类中包含必要的逻辑判断,根据客户端的选择条件动态的实例化相关的类,对于客户端来说,去除了与具体产品的依赖。 缺点:简单工厂如果要添加新的功能,则一定要修改工厂类中的’CASE’分支条件,就原创 2017-08-23 20:00:05 · 182 阅读 · 0 评论 -
设计模式之代理模式
c#代理模式1、定义为其他对象提供一种代理以控制对这个对象的访问2、原理UML类图 Subject类,定义了RealSubject和Proxy的公共接口,这样就在任何使用RealSubject的地方都可以使用Proxy代码实现 //Subject类,定义了RealSubject和Proxy的公共接口,这样就在任何使用RealSubject的地方都可以使用Proxy abstract原创 2017-08-22 22:17:18 · 180 阅读 · 0 评论 -
设计模式之装饰模式
c#装饰模式1、定义动态给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活2、原理UML类图 Compnent是定义一个对象接口,可以给这些对象动态的添加职责。ConcreteCompnent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator,装饰抽象类,继承了Compnent,从外类来扩展Compnent类的功能,但是Compnent是不需要知道原创 2017-08-22 13:37:44 · 175 阅读 · 0 评论 -
设计模式之里氏转换原则
c#里氏转换原则1、定义子类型必须能替换掉他们的父类型。 简单例子:一个是鸟类,一个是企鹅类,鸟可以飞,但是企鹅不能飞,那么企鹅类就不能继承自鸟类(即使现实世界企鹅是鸟类),因为企鹅并非拥有鸟类所有的非Private的行为和属性。2、实例 //动物父类 public class Animal { public virtual void E原创 2017-08-21 23:02:05 · 345 阅读 · 0 评论 -
设计模式之依赖倒转原则
依赖倒转原则1.定义A. 高层模块不应该依赖低层模块。两个都应该依赖抽象。 B. 抽象不应该依赖细节。细节应该依赖抽象2.为什么要叫做倒转呢?面向对象开发时,为了使得常用代码可复用,一般都会把这些代码写成许多的函数库,我们在做项目时调用这些底层的代码函数就可以了。比如我们做的项目大多低层模块。要访问数据库,所以我们就会把访问数据库的代码写成函数,每次做新的项目的时候去调用这些函数,这也叫做高层模原创 2017-08-20 21:47:36 · 219 阅读 · 0 评论 -
c#设计模式之开放封闭原则
设计模式之开放封闭原则1、定义软件实体(类,函数,模块等)应该可以扩展,但是不可以修改。2、两个特性1.对于扩展是开放的:意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。 2.对于修改是封闭的:意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。3、何时应对变化绝对的对修改关闭是不可能的,无论模块多么的“封闭”,都会存在一些无法对之封闭的变化。既然不可能完全封闭,原创 2017-08-19 22:10:47 · 670 阅读 · 0 评论 -
设计模式之单一职责原理
设计模式之单一职责原理1、定义单一职责原则(SRP):就一个类而言,应该有且只有一个引起它变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,但变化发生时,设计会遭遇到意想不到的破坏。2、实例方块游戏的设计: 分析那些是游戏的界面,那些是游戏逻辑,然后进行分离游戏的可移动区域可以设计为一个二维整型原创 2017-08-18 20:52:15 · 204 阅读 · 0 评论 -
设计模式之策略模式
设计模式之策略模式1.定义:策略模式是一种定义一系列算法的方法,从概念上看,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合。2.实例策略模式中的Strategy类层次为Context定义了一系列可供重用的算法和行为。继承有助于析取出这些算法中的公共工功能。 //Strategy类,定义所有支持算法的公共接口原创 2017-08-18 00:02:10 · 171 阅读 · 0 评论 -
设计模式之外观模式
c#外观模式1.定义为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。2.实现原理1.UML类图: 2.代码实现: //四个子系统的类 class SubSystemOne { public void MethdOne() { Console.WriteLine("子系统方法原创 2017-09-01 20:47:41 · 2772 阅读 · 0 评论