设计模式

设计模式6大原则:单一职责,依赖倒转,开放封闭,里氏代换,接口隔离迪米特

单一职责原则(SRP:一个类只专注于一个功能,且仅有一个改变它的原因。

怎么用:单行代码的职责单一

                 单个变量职责单一

                 方法职责单一

                 类或结构或结构职责单一

                 模块职责单一

 

详情:    http://blog.youkuaiyun.com/blogtjf/article/details/45129921

 

依赖倒转:针对接口编程,不针对实现编程。

 

 

开放封闭原则:对扩展开放,对修改封闭。

 

 里氏代换原则:子类必须能够替换父类。把程序里的父类换成子类,程序的的行为不应该发生任何变化。(子类可以扩展但不能改变父类原有的功能)

 

接口隔离原则:一个类对另一个类的依赖建立在最小接口上。 

 

迪米特原则:类与类之间应使用尽可能少的方法来关联,避免千丝万缕的关系。

 

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)模式:用中介者来封装一系列对象的交互,使各对象不需要显式地相互引用,从而使其松耦合。例子:房东和房客保存一个中介者引用,收发信息统一由中介者完成,而中介者负责根据不同的对象完成发送信息。 

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值