![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
李子怡
这个作者很懒,什么都没留下…
展开
-
设计模式-工厂方法模式与简单工厂模式
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。产生原因:简单工厂模式,如果添加新运算类就会影响开放-封闭原则。为了解决这个问题,采用工厂方法模式。举例:计算器的加减乘除,如果添加一个新的运算类M的N次方类,简单工厂模式就会违反开放-封闭原则,这时候我们使用工厂方法模式。简单工厂模式:代码:运算类: p...原创 2019-05-03 09:59:45 · 182 阅读 · 4 评论 -
设计模式-观察者模式与委托
目录观察者模式:委托:观察者模式:使用场景:一:当一个对象的改变需要同时改变其他对象的时候。而且它不知道具体有多少对象有待改变时,应该考虑使用观察者模式。二:一个抽象模型有两个方面,其中一方面依赖于另一方面,这时用观察者模式可以将这两者封装在独立的对象中,使它们各自独立地改变和复用。观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主...原创 2019-05-09 21:20:15 · 424 阅读 · 2 评论 -
设计模式-建造者模式
举例:画两个不同的小人,容易违反依赖倒转原则(即抽象不应该依赖细节,细节应该依赖于抽象)。容易缺胳膊少腿。最好的办法是规定建造小人的固定步骤,都有头,身体,两手两脚。即使是需要高矮胖瘦不同的小人,也可以用建造者模式设计出来。建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。分析:建造者模式可以将一个产品的内部表现与产品的生成过程分割开来,从而可以使一个建...原创 2019-05-09 17:09:03 · 195 阅读 · 2 评论 -
设计模式-外观模式
外观模式(门面模式):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。举例:炒股。一个人炒股风险大,对于股票联系太多,不利于操作,也就是耦合性过高。很多人选择基金,它将投资者分散的资金集中起来,交由专业的经理人进行管理,基金会买几十支股票,用户只和基金打交道,实际的操作是基金经理人和股票以及其他投资打交道。结构图:代码:基金...原创 2019-05-09 11:46:58 · 136 阅读 · 4 评论 -
依赖倒转原则和里氏转换原则
依赖倒转原则:A.高层模块不应该依赖低层模块。两个都应该依赖抽象。分析:被调用的是低层模块。如果依赖低层模块,这样造成紧耦合,修改任何部分都会影响其他部分。就像电脑中的CPU,内存,都依赖具体的主板,主板一坏,所有的部件都没用了,这不合理。反过来,如果内存坏了,也不应该导致其他部件不能用。所以我们都应该依赖于抽象,这样任何部件坏了,其他不会受到影响,使得无论高层模块还是低层模块都可以很...原创 2019-05-02 20:49:58 · 317 阅读 · 5 评论 -
设计模式-代理模式
代理模式:为其他对象提供一种代理以控制对这个对象的访问。例子:追求者找人帮忙给自己喜欢的女生送礼物。代码:代理接口: interface IGiveGift { void GiveDolls(); void GiveFlowers(); void GiveChocolate(); }追求者类:...原创 2019-05-01 10:29:16 · 173 阅读 · 13 评论 -
设计模式-装饰模式
装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。例子:穿衣服一.通常我们会写成这样:如果要添加穿裙子这个新方法,就要修改‘人’类,就违背了开放-封闭原则。二.单纯的抽象一个服饰类,下面继承一些具体服饰的子类:但是相当于穿上大T恤就展示一下,再穿垮裤展示一下。如果想按顺序穿完衣服之后再展示,这时候就可以使用装饰模式。装饰模式...原创 2019-05-01 09:54:23 · 179 阅读 · 13 评论 -
单一职责原则和开放-封闭原则
如果设计一个计算器有加减乘除的功能。下面的UML图违反了什么原则:单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。产生原因:如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。判断方法:如果你能想到多于一个的动机去改变一个类,那么这个类就具有多于...原创 2019-04-30 20:53:35 · 617 阅读 · 9 评论 -
设计模式-模板方法模式
给一套试题让甲乙两人来做,代码如何实现:代码:试题类: class TestPaper { public void TestQuestion1() { Console.WriteLine("屠龙刀的玄铁可能是()a.铁磨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维"); } pub...原创 2019-05-08 21:11:38 · 138 阅读 · 5 评论 -
设计模式-原型模式
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。即:就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。就是克隆一个新的对象,在客户端,看不到简历类的内容。但是可以修改细节。实例:写简历。我们简单设置个人信息和工作经历不同的两个新情况。简历类:class Resume:ICloneable { private...原创 2019-05-08 19:37:09 · 138 阅读 · 7 评论