首页 > 学院 > 开发设计 > 正文

设计模式-笔记01

2019-11-11 01:47:02
字体:
来源:转载
供稿:网友

1.9 紧耦合vs松耦合

public class Operation{ PRivate double _numberA=0; private double _numberB=0; public double NumberA { get{ return _numberA;} set{ _numberA = value;} } public double NumberB{ get{ return _numberB;} set{_numberB = value;} } public virtual double GetResult(){ double result =0; return result; }}class OperationAdd:Operation // 加法类继承运算类{ public override double GetResult() { double result =0; result = NumberA+NumberB; return result; }}class OperationSub:Operation // 减法类继承运算类{ public override double GetResult() { double result =0; result = NumberA - NumberB; return result; }}class OperationMul:Operation // 乘法类继承运算类{ public override double GetResult() { double result =0; result = NumberA * NumberB; return result; }}class OperationDiv:Operation // 除法类继承运算类{ public override double GetResult() { double result =0; if(NumberB==0){ throw new Exception("除数不能为0"); result = NumberA / NumberB; return result; } }}public class OperationFactory{ public static Operation createOperation(string operate){ Operation oper = null; switch(operate){ case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; case "*": oper = new OperationMul(); break; case "/": oper = new OperationDiv(); break; } return oper; }}

2.7 策略模式解析 减少算法类之间的DPE

反射

3.4 单一原则

3.5 ASD

4.开放-封闭原则 The Open-Closed

类、模块、函数等应该可以扩展,但是不可修改 ASD

面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有代码实现的

强内聚,松耦合

里氏代换原则 LSP ,子类必须能够替换父类类型

装饰模式(Decorator) 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。

代理模式:

class Proxy{ SchoolGirl mm; public Proxy(SchoolGirl mm){ this.mm=mm; } public void GiveDolls(){ Console.WriteLine(mm.Name+"送你洋娃娃"); } public void GiveFlowers() { Console.WriteLine(mm.Name+"送你鲜花"); } public void GiveChocolate() { Console.WriteLine(mm.Name+"送你巧克力"); }}class SchoolGirl{public string Name{ get{ return name;} set{name =value;}}private string name; }static void Main(string[] args){ SchoolGirl jiaojiao = new SchoolGirl(); jiaojiao.Name="李娇娇"; Pursuit daili = new Proxy(jiaojiao); daili.GiveDolls(); daili.GiveFlowers(); daili.GiveFlowers(); Console.Read();}// 代理接口interface GiveGift{ void GiveDolls(); void GiveFlowers(); void GiveChocolate();}// 追求者类class Pursuit:GiveGift{SchoolGirl mm;public Pursuit(SchoolGirl mm){ this.mm=mm;}public void GiveDolls(){ Console.WriteLine(mm.Name+"送你洋娃娃");}...}class Proxy:GiveGift{ Pursuit gg; public Proxy(SchoolGirl mm){ gg = new Pursuit(); } public void GiveDolls(){ gg.GiveDolls(); } ...}// 客户端如下static void Main(string [] args){ SchoolGirl jiaojiao = new SchoolGirl(); jiaojiao.Name="李娇娇"; Proxy daili = new Proxy(jiaojiao); daili.GiveDolls(); ... Console.Read();}工厂方法模式:// 构建工厂的接口interface IFactory{ Operation CreateOperation();}class AddFactory:IFactory{ //加法类 public Operation CreateOperation(){ return new OperationAdd(); } ...}// 客户端IFactory operFactory = new AddFactory();Operation oper = operFactory.CreateOperation();oper.NumberA=1;oper.NumberA=1;double result = oper.GetResult();
上一篇:第一章 对象导论

下一篇:牌型种数

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表