设计模式
MissZhou要努力
不晓日月,不辩兰艾,终日碌碌,安与燕雀相随乎
展开
-
面向对象基础
1.面向对象三大特征——封装、继承、多态(1)封装:每个对象都包含它能进行操作所需要的所有信息,因此对象不必依赖其他对象来完成自己的操作优点:良好的封装能够减少耦合;类内部的实现可以自由的修改;类具有清晰的对外接口(2)继承:继承定义了类如何相互关联,共享特性。子类拥有父类非private的属性和功能;子类具有自己的属性和功能;子类还可以重写父类的功能(方法重写)protected原创 2017-07-13 11:14:09 · 431 阅读 · 0 评论 -
设计模式——原型模式(浅拷贝,深拷贝)
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象浅拷贝:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 原型模式{ class Program { ...原创 2018-03-27 17:53:42 · 344 阅读 · 0 评论 -
设计模式——组合模式Composite
逻辑非常清晰,代码非常好写的一种设计模式定义:讲对象组合成树形结构以表示“部分-整体”的层次结构。组合你是是的用户对单个对象和组合对象的使用具有一致性using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespac...原创 2018-03-28 14:50:00 · 271 阅读 · 0 评论 -
设计模式——享元模式Flyweight
定义:运用共享技术有效支持大量细粒度的对象有一个享元工厂,用来创建并管理flyweight对象。它主要是确保合理共享flyweight,当用户请求一个flyweight时,flyweight工厂对象提供一个已知创建的实例或者创建一个内部状态和外部状态:在享元对象内部并且不会随环境变化而变化的共享状态,是享元对象的内部状态随环境改变而改变的,不可以共享的状态是外部状态使用情景:如果一个应用程序使用了...原创 2018-04-06 15:43:40 · 209 阅读 · 0 评论 -
设计模式——状态模式State
针对方法过长违背“单一职责原则”和“开放封闭原则”而提出 定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来是改变其类主要解决的是当控制一个对象状态转换的条件表达式过于复杂的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化好处:将于特定状态相关的行为局部化,并且将不同状态的行为分割开来,将特定的状态相关的行为都放入一个对象中,由于所有状态相关的代码...原创 2018-04-23 16:07:11 · 186 阅读 · 0 评论 -
设计模式——桥接模式bridge
将抽象部分和实现分离,使得他们可以独立变化using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 桥接模式{ abstract class HandsetSoft { ...原创 2018-04-19 13:54:47 · 184 阅读 · 0 评论 -
设计模式——备忘录模式Memento
算的上是比较简单的设计模式了,然而自己写还是磕磕绊绊定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。Originator(发起人)负责创建一个备忘录,用以记录时刻它的内部状态,并可使用备忘录回复内部状态。Originator可根据需要决定备忘录存储那些内部状态Memento(备忘录)负责存储发起人对象的内部状态,并可防止...原创 2018-04-24 18:14:58 · 258 阅读 · 0 评论 -
设计模式——命令模式Command
将一个命令封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作优点:1.比较容易设计出一个命令队列2.在需要的情况下,可以比较容易地将命令记入日志3.允许接收请求的一放决定是否要否决请求4.容易实现对于请求的撤销与重做5.由于加入新的具体命令类不影响其他的类,因此增加新的具体命令类很容易6.把请求一个操作的对象与知道怎么执行一个操作的对象分割开us...原创 2018-04-25 14:24:36 · 181 阅读 · 0 评论 -
设计模型——解释器模式interpret
解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子需要解决的问题是:如果一种特定雷丁的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构造一个解释器,该解释器通过解释这些句子来解决该问题。通常当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可以使用用了解释器...原创 2018-09-13 10:36:09 · 239 阅读 · 0 评论 -
设计模式——装饰模式Decorate
装饰模式定义:动态给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活Component是定义了一个对象接口,可以给这些对象动态添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责Decorator装饰抽象类,继承了Component从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorater的存...原创 2018-04-09 11:16:30 · 491 阅读 · 0 评论 -
设计模式——代理模式
代理模式:为其他对象提供一种代理以控制对这个对象的访问使用场合:(1)远程代理,为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实.NET中在应用程序项目中加入一个web引用,引用一个WebService此时会在项目中产生一个WebReference的文件夹和一些文件,就是代理(2)虚拟代理:根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象可以...原创 2018-03-21 20:52:31 · 183 阅读 · 0 评论 -
设计模式——外观模式
定义:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高级接口,这个接口使得这一个子系统更加容易使用。首先,在设计初期阶段,应该要有意识的将不同的层分离。其次,在开发阶段,子系统往往因为不断的重构演化而变得复杂,增加外观类可以提供一个简单的接口,减少他们的依赖。第三,在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和发展了,开发一个外观类,来提供设计粗糙或高度复杂的遗留代码的比较清...原创 2018-03-13 09:26:41 · 178 阅读 · 0 评论 -
设计模式——简单工厂模式
本系列摘录于《大话设计模式》旨在记录学习过程,之前看的都忘记了,好在每天一个设计模式工作量也不太大业务的封装是让业务逻辑与界面逻辑分开,降低耦合度简单工厂模式:到底实例化谁,将来会不会增加实例化对象例子:计算器using System;using System.Collections.Generic;using System.Text;namespace 简单工厂{原创 2017-07-13 15:05:30 · 300 阅读 · 2 评论 -
c#反射机制+抽象工厂
using System.Configuration;默认使用之前要添加引用对应的dll之前用抽象工厂模式类名没法变啊,还是要手动写出要实例化的类,重新编译但是,反射机制的出现使得我们通过修改配置文件无需再次编译!具体如下修改配置文件的Sqlserver即可配置文件<?xml version="1.0" encoding="utf-8" ?><configuration>...原创 2018-02-26 16:04:09 · 682 阅读 · 0 评论 -
设计模式——适配器模式
感觉这个才是最简单的设计模式有木有!就是把之前的接口再封装一下而已==当系统的数据和行为都正确,但是接口不符合时,我们应该考虑使用适配器模式,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要用于希望复用一些现有的类,但是接口和复用环境不一致的情况 abstract class Student { public abstract void Study()...原创 2018-03-06 21:02:47 · 247 阅读 · 0 评论 -
设计模式——策略模式
设计商场收银软件 根据客户需求购买的单价和数量,计算总额商场需求:打折和满减简单工厂弄湿每次维护或扩展收费都要改动这个工厂,以至于代码需要重新编译部署引入策略模式:定义算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户using System;using System.Collections.Generic;using System.Component...原创 2018-02-28 16:22:06 · 266 阅读 · 0 评论 -
设计模式——单例模式
用全局变量使得一个对象被访问,但是它不能防止你实例化多个对象。最好的办法是,让类自身负责保存它唯一的实。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法class Singleton { private static Singleton instance; private Singleton() { } ...原创 2018-03-01 15:46:01 · 166 阅读 · 0 评论 -
工厂方法模式
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖引入:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到了其子类简单的来说,工厂模式实现的时候,客户端需要决定实例化哪一个工厂来实现抽象接口类,即工厂方法是把简单工厂的内部逻辑判断移到了客户端代码进行。想要加功能,本来是...原创 2018-02-23 11:28:39 · 227 阅读 · 0 评论 -
设计模式——中介者模式
中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使得其耦合松散,而且可以独立的改变它们之间的交互。 abstract class Mediator//抽象中介者 { public abstract void Send(string message, Colleague colleague); } abstract c...原创 2018-03-11 21:06:34 · 193 阅读 · 0 评论 -
设计模式———建造者模式
对象说除了单例模式以外这个设计模式最简单……小100行……哪里简单学习建造者模式再次印证了学习OOP最好的方法是学设计模式运用场景是讲一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。即:讲一个产品的内部表象和产品的生成过程分割开来,从而可以使得一个建造过程生成具有不同内部表象的产品对象。如果使用建造者模式,那么用户就可以只需指定需要建造的类型就可以得到他们,具体的建造过程和...原创 2018-03-05 09:04:55 · 200 阅读 · 0 评论 -
设计模式——职责链模式
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递请求,直到有一个对象处理他为止。namespace 职责链模式{ abstract class Handler { protected Handler successor; public void SetSuccessor(Handl...原创 2018-09-26 18:41:52 · 142 阅读 · 0 评论