设计模式汇总及简单注解

https://www.cnblogs.com/PatrickLiu/p/8287784.html
https://www.cnblogs.com/PatrickLiu/category/899680.html

★★★  C#设计模式(1)——单例模式

http://www.cnblogs.com/PatrickLiu/p/8250985.html

创建唯一对象

 

★★★★★ C#设计模式(2)——简单工厂模式

最常用的工厂

 

★★★ C#设计模式(3)——工厂方法模式

http://www.cnblogs.com/PatrickLiu/p/7567880.html

和抽象工厂类似

1、如果没有应对“多系列对象创建”的需求变化,则没有必要使用AbstractFactory模式,这时候使用简单的静态工厂完全可以。

2、"系列对象"指的是这些对象之间有相互依赖、或作用的关系,例如游戏开发场景中“道路”与“房屋”的依赖,“道路”与“地道”的依赖。

3、AbstractFactory模式主要在于应对“新系列”的需求变动。其缺点在于难以应对“新对象”的需求变动。

4、AbstractFactory模式经常喝FactoryMethod模式共同组合来应对“对象创建”的需求变化。

 

★★★ C#设计模式(4)——抽象工厂模式
https://www.cnblogs.com/PatrickLiu/p/7596897.html
通过抽象工厂,可以创建一系列对象

 

★★★ C#设计模式(5)——建造者模式(Builder Pattern)
http://www.cnblogs.com/PatrickLiu/p/7614630.html

和抽象工厂类似,加了一个创建方法,隐藏了内部实现逻辑

public class Director

{

  public void Construct(Builder builder)

  {

      builder.BuildCarDoor();

      builder.BuildCarWheel();

      builder.BuildCarEngine();

  }

}

(1)、使用建造者模式可以使客户端不必知道产品内部组成的细节

(2)、具体的建造者类之间是相互独立的,容易扩展。

(3)、由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。

 

 

C#设计模式(6)——原型模式(Prototype Pattern)

http://www.cnblogs.com/PatrickLiu/p/7640873.html

深、浅克隆自身对象

 

★★★★ C#设计模式(7)——适配器模式(Adapter Pattern)

http://www.cnblogs.com/PatrickLiu/p/7660554.html

通过继承被适配对象和接口来实现 或 仅继承接口通过实例化被适配对象 来实现。

 

★★★ C#设计模式(8)——桥接模式(Bridge Pattern)

http://www.cnblogs.com/PatrickLiu/p/7699301.html

在主对象中,横向引入其他对象实现主对象中的功能,主对象和其他对象彼此保持独立。

如BLL中引用DAL
如 多种坦克型号在不同的系统下工作(手机、PC、MAC)

 

★★ C#设计模式(9)——装饰者模式(Decorator Pattern)
http://www.cnblogs.com/zhili/p/DecoratorPattern.html
装饰者模式以对客户透明的方式动态地给一个对象附加上更多的责任,装饰者模式相比生成子类可以更灵活地增加功能。

当系统中可能有无法预计的功能时,通过在构造器中引入同类对象,使对象具有引入对象的功能,同时拥有自己的功能。前端可根据自己的需要开发自己需要的功能子类,同时通过装配实现自己想要的功能。

如:手机添加贴膜,手机挂件,手机外壳

如:一朵花可以开出自己想的颜色

 

C#设计模式(10)——组合模式(Composite Pattern)

https://www.cnblogs.com/zhili/p/CompositePattern.html

单一对象和组合对象具体相同的方法和特征

透明模式:没有的功能抛出异常

安全模式:没有的功能不出现在类里

 

★★ C#设计模式(11)——外观模式(Facade Pattern)

http://www.cnblogs.com/PatrickLiu/p/7772184.html

封装一个统一方法处理一堆内部子方法,对外解藕和隐藏业务细节,简化客户端操作

 

C#设计模式(12)——享元模式(Flyweight Pattern)

http://www.cnblogs.com/PatrickLiu/p/7792973.html

缓存创建的对象避免实例化过多对象影响性能,类似AutoFac的单例注册

 

★★ C#设计模式(13)——代理模式(Proxy Pattern)

让代理对象代替目标对象

https://www.cnblogs.com/liumz0323/p/10328418.html

 

★★★★★  C#设计模式(14)——模板方法模式(Template Method)

http://www.cnblogs.com/PatrickLiu/p/7837716.html

在一个抽象类中定义一个操作中的算法骨架,而将一些步骤延迟到子类中去实现

 

 

★★ C#设计模式(15)——命令模式(Command Pattern)

http://www.cnblogs.com/PatrickLiu/p/7873322.html

命令模式是把一个操作或者行为抽象为一个对象中,通过对命令的抽象化来使得发出命令的责任和执行命令的责任分隔开。命令模式的实现可以提供命令的撤销和恢复功能。

流程:1. 先创建命令执行者。2. 创建命令(指定命令执行者) 。3. 发布命令(指定命令)

 

C#设计模式(16)——迭代器模式(Iterator Pattern)

http://www.cnblogs.com/PatrickLiu/p/7903617.html

集合或泛型集合使用的模式

 

★★ C#设计模式(17)——观察者模式(Observer Pattern)

http://www.cnblogs.com/PatrickLiu/p/7928521.html

事件订阅与通知处理

 

★★ C#设计模式(18)——中介者模式(Mediator Pattern)

https://www.cnblogs.com/zhili/p/MediatorPattern.html

N个对象,一个中介平台,对象之间的交互依赖中介平台实现,解藕对象之间的藕合关系。

在现实生活中,两个人打牌,如果某个人赢了都会影响到对方状态的改变。如果此时不采用中介者模式实现的话

 

★★ C#设计模式(19)——状态者模式(State Pattern)

http://www.cnblogs.com/PatrickLiu/p/8032683.html

状态模式——允许一个对象在其内部状态改变时自动改变其行为,对象看起来就像是改变了它的类。

如订单的处理流程

 

★★★★ C#设计模式(20)——策略者模式(Stragety Pattern)

http://www.cnblogs.com/PatrickLiu/p/8057654.html

如不同的计薪方式,和工厂类似,不同之处就是多了环境角色类
public sealed class SalaryContext

{

    private ISalaryStrategy _strategy;

    public SalaryContext(ISalaryStrategy strategy){this._strategy = strategy;}

    public ISalaryStrategy ISalaryStrategy{get { return _strategy; }set { _strategy = value; }}

    public void GetSalary(double income){_strategy.CalculateSalary(income);}

}

 

★★ C#设计模式(21)——责任链模式
http://www.cnblogs.com/zhili/p/ChainOfResponsibity.html

某个请求需要多个对象进行处理,从而避免请求的发送者和接收之间的耦合关系。将这些对象连成一条链子,并沿着这条链子传递该请求,直到有对象处理它为止。
如:公司采购东西为例子来实现责任链模式,采购架构总价在1万之内,经理级别的人批准即可,总价大于1万小于2万5的则还需要副总进行批准,总价大于2万5小于10万的需要还需要总经理批准,而大于总价大于10万的则需要组织一个会议进行讨论。

 

C#设计模式(22)——访问者模式(Vistor Pattern)

http://www.cnblogs.com/PatrickLiu/p/8135083.html

在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计。如何在不更改类层次结构的前提下,在运行时根据需要透明地为类层次结构上的各个类动态添加新的操作,从而避免上述问题

 

C#设计模式(23)——备忘录模式(Memento Pattern)

http://www.cnblogs.com/PatrickLiu/p/8176974.html

 

★★ C#设计模式(24)——解释器模式(Memento Pattern)

http://www.cnblogs.com/PatrickLiu/p/8242238.html

如中文数字转阿拉伯数字,"五亿七千三百零二万六千四百五十二"  转为 阿拉伯数字

posted @ 2019-01-30 13:56  有容乃大  阅读(...)  评论(...编辑  收藏