1.简单工厂模式:直接通过参数创建对象,对创建过程进行统一,利于代码简洁,但如果要添加新对象需要修改创建过程,不符合开闭原则;适合比较简单、稳定的需求。
2.工厂方法模式:简单工厂模式的延伸,解决添加新对象问题,符合开闭原则,但仅能包含一级对象;
3.抽象工厂模式:比工厂方法模式抽象程度更高,一个工厂可以生产一组产品,每一个产品可以分属不同的产品族,方便扩展产品,但不方便扩展产品族;
4.建造者模式:适用于创建有较多共同点、组成部分相似的产品,并且产品的构建过程需要管控;隔离复杂对象的创建和使用,并使相同的创建过程可以创建不同的产品
5.原型模式:如对象创建较复杂或耗时可通过克隆方式创建,缺点是每个类都得写一个克隆方法;
6.单例模式:确保类只有一个实例,但C#存在自动垃圾回收机制,可能会被自动销毁并回收资源导致单例对象状态丢失;静态类也可实现类似功能,但单例可以继承接口并解耦(降低类间互相影响);
7.适配器模式:将现有不合适的接口转化为所希望的接口;
8.桥接模式:类有多个变化维度,则可每个变化维度设计一个接口并继承扩展,这样多维度解耦并降低类的个数;
9.组合模式:需要兼容对象间存在差异可建立上层抽象类继承后进行区别处理,以统一,可提高系统灵活性,同层扩展组合;
10.装饰模式:适合向下扩展组合,丰富对象的内在细节;
11.外观模式:整合一组接口至一个统一接口,使更加容易使用,类似建造者模式,但更倾向于过程;
12.享元模式:适用系统中存在大量相同或相似的对象,可用共享方法重复使用相同部分,不同部分状态外部化,实现节约内存、提高性能。
13.代理模式:在调用外部DLL时经常使用,实现一个居间类完成一些功能;虚拟代理可应对较长加载时间或十分耗费系统资源的应用;
14.职责链模式:将一个处理请求以链的形式传递;
15.命令模式:将命令封装为对象,请求发送者通过命令对象间接引用请求接收者,使系统具有更好的灵活性和可扩展性;
16.解释器模式:将简单的自定义语言转换为可执行代码的结构;
17.迭代器模式:为聚合对象提供遍历方式,解决遍历类应用;