设计模式 6 大原则:单一职责,依赖倒转,开放封闭,里氏代换,接口隔离,迪米特
单一职责原则:一个类只专注于一个功能,且仅有一个改变它的原因。
依赖倒转:针对接口编程,不针对实现编程。
开放封闭原则:对扩展开放,对修改封闭。
里氏代换原则:子类必须能够替换父类。把程序里的父类换成子类,程序的的行为不
应该发生任何变化。(子类可以扩展但不能改变父类原有的功能)
接口隔离原则:一个类对另一个类的依赖建立在最小接口上。
迪米特原则:类与类之间应使用尽可能少的方法来关联,避免千丝万缕的关系。
1 简单工厂模式(没有抽象工厂类):所有产品都在一个非抽象的工厂类内部根据传
入的参数动态实例化。违反了开放封闭原则。例子:抽象运算基类(产品基类),加、减、
乘、除四个产品继承他,工厂类根据传入的运算符号,new 并返回。
2 工厂方法模式(有抽象工厂类):相比于简单工厂模式,定义了一个抽象工厂基类,
具体工厂类继承它,一个工厂类只负责实例化对应的一个产品对象,满足了开放封闭原则。
当增加新产品时,只需增加一个工厂类,而不用修改原有工厂类。例子:抽象运算基类,
加、减、乘、除四个类子类继承他,定义四个工厂类继承抽象工厂类,new 并返回相应的
操作加减乘除的对象。
3 策略模式:当有任务需要多个功能不同但接口相同的算法,定义一个算法策略基类,
每个算法继承这个策略基类。定义一个算法调用 Context 类,保存算法策略抽象类的引用,
并利用多态进行具体算法对象的动态调用,即把 new 算法对象的任务放到 context 类中
完成。
4 观察者模式:又叫订阅发布模式,用户界面 view 作为观察者,model 是被观察者,
view 观察业务数据的变化,数据变化后,model 通知界面进行更新
5 单例模式:static Single* getinstance(),任何时刻,访问成员数据必须依靠属于
类的唯一的 static 对象完成。
6 代理模式:为一个类做一个代理(实质是保存这个类的对象引用),这个代理完成
跟这个类相同的工作,并且可以增加其他想要的功能比如被代理类访问权限控制。
7 适配器模式:对一个接口太复杂的类做一个封装,即做一个客户端便于访问的适配器
类。
8 门面模式:当客户端想要访问多个类的接口时,为这些类做一个 facade 类,客户
端只需要访问 façade 类的接口就能完成工作,façade 类对这些系统类进行封装时需使用
系统类的单例。
9 中介者(Mediator)模式:用中介者来封装一系列对象的交互,使各对象不需要
显式地相互引用,从而使其松耦合。例子:房东和房客保存一个中介者引用,收发信息统
一由中介者完成,而中介者负责根据不同的对象完成发送信息。
评论0
最新资源