1. 简单工厂模式
概念:在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
2. 策略模式
例子:商城促销
概念(Strategy):它定义了算法家族,分别封装起来, 让他们之间可以互相替换,此模式让算法的变化, 不会影响到使用算法的用户。
解析:策略模式是一种定义一系列算法的方法,这些算法完成的是相同的工作,只是实现不同,它可以以相同的方式调用所有的散发, 减少了各种算法与使用算法累之间的耦合。
Strategy为context定义了一系列的可供重用的算法或行为。继承有助于吸取这些算法中的公共方法, 优点是减化了单元测试,可以通过自己的接口单独测试。
策略模式是用来封装算法的。
3. 单一职责原则
概念:就一个类而言, 他应该仅有一个引起它变化的原因
4. 开放-封闭原则
概念:软件实体(类,模块,函数等)应该可以扩展, 但是不可以修改。
对于扩展是开放, 对于更改是封闭的。使得产品稳定。
5. 依赖倒转原则(修电脑不能修收音机)
要针对接口编程,不要对实现编程。
A. 高层模块不应该依赖低层模块,两个都应该依赖抽象
B. 抽象不应该依赖细节, 细节应该依赖抽象。
6. 里氏代换原则
一个软件实习如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说, 在软件里, 把父类都替换成他的子类, 程序的行为没有变化。
概念:子类型必须能够替换掉他们的子类型。
7. 装饰器模式
(小菜扮靓)
概念:动态地给一个对象添加一些额外的职责, 就添加功能来说,装饰模式比生成子类更为灵活。
8 代理模式
为他人做嫁衣
概念:代理模式,为其他对象提供一种代理以控制对这个对象的访问。
有一些例子
A. 远程代理, 也就是为一个对象在不同的地址空间提供局部代表, 这样可以隐藏一个对象存在与不同地址空间的事实。
B. 虚拟代理,是根据需求创建开销很大的对象, 通过它来存放实例化需要很长时间的真实对象。
C. 安全代理,用来控制真实对象访问的权限
D.智能代理,是指当调用真实的对象时, 代理处理另外一些事。
9. 工厂方法模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法是一个类的实例化延迟到子类。
interface IFactory { LeiFeng CreateFactory() } class UdergraduateFacoty:IFactory { public LeiFeng CreateLeiFeng() { return new Ugrate(); } } class VoluteerFacory:IFactory { public LeiFeng CreateLeiFeng() { return new Voluteer(); } } // client IFacotry factory = new UndergrateIFacotry(); LeiFeng student = facotry.CreateLeiFeng(); student.name();
优点:
遵守了关闭开放原则
简单工厂的好处是工厂类包含了必要了逻辑判断,根据客服端的选择动态实例化相关的类。可是违背了开放-封闭原则
10. 原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
其实就是从一个对象再创建另外一个可定制的对象, 且不需要知道任何创建的细节。
这里clone对象, 设及浅赋值和深复制
浅赋值:被复制的对象的所有变量都含有与原来的对象相同的值, 而所有的对对象的引用都仍然指向原来的对象
深复制:把引用的对象的变量指向复制过的对象, 而不是原有的被引用的对象。