




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
菜鸟学设计模式(28天)原则:开放封闭原则(OCP):对扩展开放,对修改关闭。 里氏代换原则(LSP): 子类型必须能够替代它们的基类型 依赖倒置原则(DIP) : 抽象不应当依赖于细节;细节应当依赖于抽象; 要针对接口编程,不针对实现编程。 接口隔离原则(ISP): 使用多个专门的接口比使用单一的总接口总要好 迪米特法则(LoD)/最少知识原则(LKP) :一个对象应当对其它对象有尽可能少的了解模式:Simply Factory Pattern: 当我们在买早餐的时候,早餐店里都卖得写什么呢?这点你有注意吗?众多食品摆在那里,你只对营业员说你要何种食品,他便会知道给你拿什么样的食品给你,这说明什么呢?如果用面向对象的思想来理解的话,营业员在这里就充当了一个工厂的角色,他负责根据你的请求返回你需要的食品对象。而这一点正是简单工厂模式的意图地二天:Strategy Pattern 策略模式是一种定义一系列算法的方法,概念上:都是为了完成同一个任务,只是实现不同。它可以以相同的方式 调用各种算法,降低算法类之间的耦合,利于扩展。 第三天:Decorator Patternusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DecoretorPattern public class Water public virtual void Add() public class Decoretor : Water public Water ww; public void SetDecoretor(Water ww) this.ww = ww; public override void Add() if (ww != null) ww.Add(); public class AddIce:Decoretor public override void Add() base.Add(); Console.WriteLine(AddIce); public class AddCoffee : Decoretor public override void Add() base.Add(); Console.WriteLine(AddCoffee); class Program static void Main(string args) AddCoffee coffee = new AddCoffee(); AddIce ice = new AddIce(); coffee.SetDecoretor(new Water(); ice.SetDecoretor(coffee); ice.Add(); Console.ReadLine(); 装饰器模式:动态的给某对象添加一些额外的职责,把类本身具备的装饰功能从其本身划分出去,当需要时,随时随地的配上需要的功能。好处既是把类的核心职责与装饰功能划分开,而且可以去除相关类的重复装饰逻辑。第四天: Proxy Pattern代理分为 远程代理 虚拟代理 安全代理 智能指引远程代理:WebService 隐藏对象不在同一个地址空间的事实虚拟代理:安全代理:用来控制 访问时候的权限智能指引:当调用真实的对象时,处理代理的事。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ProxyPatternDemo public abstract class Subject public abstract void Request(); public class RealRequest:Subject public override void Request() Console.WriteLine(真实的请求); public class Proxy : Subject public RealRequest request; public override void Request() if (request = null) request = new RealRequest(); request.Request(); class Program static void Main(string args) Proxy p = new Proxy(); p.Request(); Console.ReadLine(); 第五天:Factory Method Pattern方法工厂模式:定义一个用于创建对象的接口让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到子类;using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace FactoryMethodDemo public class QQPet public virtual void Eat() Console.WriteLine(吃饭); public virtual void Sleep() Console.WriteLine(睡觉); public class Penguin:QQPet public override void Eat() Console.WriteLine(企鹅吃饭); public override void Sleep() Console.WriteLine(企鹅睡觉); public class Bear : QQPet public override void Eat() Console.WriteLine(熊吃饭); public override void Sleep() Console.WriteLine(熊睡觉); interface IFactory QQPet CreatePet(); public class PenguinFactory:IFactory #region IFactory 成员 public QQPet CreatePet() return new Penguin(); #endregion public class BearFactory:IFactory #region IFactory 成员 public QQPet CreatePet() return new Bear(); #endregion class Program static void Main(string args) IFactory factory = new Penguin(); QQPet pet = factory.CreatePet(); IFactory factory2 = new Bear(); QQPet pet2 = factory2.CreatePet(); 第六天:Prototype Pattern原型模式:一个对象(版本可能不同)在不同的地方 多次运用。QQ好友克隆:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace PrototypePatternDemo public class QQFriend : ICloneable private int _QQId; public int QQId get return _QQId; set _QQId = value; private string _QQName; public string QQName get return _QQName; set _QQName = value; #region ICloneable 成员 public object Clone() return (object)this.MemberwiseClone(); #endregion public class QQ281235210 : ICloneable private int _QQId; public int QQId get return _QQId; set _QQId = value; private string _QQName; public string QQName get return _QQName; set _QQName = value; private QQFriend _QQFriends; public QQFriend QQFriends get return _QQFriends; set _QQFriends = value; public QQ281235210(QQFriend Friend281235210) Friend281235210 = new QQFriend(); this.QQFriends = (QQFriend)Friend281235210.Clone(); #region ICloneable 成员 public object Clone() QQ281235210 qq = new QQ281235210(this.QQFriends); qq.QQId = this.QQId; qq.QQName = this.QQName; #endregion 第七天:Template Method Pattern模版方法模式:将不变的行为,放在父类中,去除子类中的重复!using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace TemplateMethodDemo public abstract class Morning public abstract void Wash(); public abstract void Food(); public void Template() Console.WriteLine(早晨起床:); Wash(); Food(); public class Xiaoming : Morning public override void Wash() Console.WriteLine(小明洗脸); public override void Food() Console.WriteLine(小明吃饭); public class Lisi : Morning public override void Wash() Console.WriteLine(李四洗脸); public override void Food() Console.WriteLine(李四吃饭); 第八天:Facade Pattern门面模式:外部想访问一个系统内的某个子系统,通过门面系统,即使调用者 不知道 子系统的实现方法,同样达到调用的结果。使得更容易使用这一套接口using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace FacadePatternDemo public class Fund/基金 Stock1 s1; Stock2 s2; StateDebt sd1; public Fund() s1 = new Stock1(); s2 = new Stock2(); sd1 = new StateDebt(); /基金操作 public void Buy() s1.Buy(); sd1.Buy(); public void Sell() sd1.Sell(); s2.Sell(); public class Stock1/股票1 public void Sell() Console.WriteLine(抛股票1); public void Buy() Console.WriteLine(买股票1); public class Stock2/股票2 public void Sell() Console.WriteLine(抛股票2); public void Buy() Console.WriteLine(买股票2); public class StateDebt/国债1 public void Sell() Console.WriteLine(抛国债1); public void Buy() Console.WriteLine(买国债1); 第九天:Build Pattern 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的创建过程可以创建不同的表示第十天:Observer Pattern观察者模式:观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。观察者和被
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年保密知识考试及答案
- 2025年保安主管考试及答案
- 2025年奥尔夫音乐考试题及答案
- 2025年安全师证考试及答案
- 阿尔兹海默病试卷及答案
- 2025年医疗废物知识题库及答案
- 充电桩厂家施工方案设计
- 教育行业推广方案范本
- 东营古建施工方案设计
- 更换标识标牌方案范本
- 重点实验室开放管理办法
- 【城市道路监理大纲】市政一级主干道路工程监理大纲
- 2025年四川省成都市辅警协警笔试笔试预测试题(含答案)
- 国企运营资产管理办法
- 【Google】2025全球短剧营销白皮书(市场数据、渠道打法、ROI全盘点)
- 农业植保员培训课件
- 机场特种车管理制度
- 胞吐囊泡分泌的时空调控-洞察阐释
- 面房合伙人合同范本
- 易货员实操考试试题及答案
- 工厂品质协议书范本
评论
0/150
提交评论