设计模式
永远的红姐
不积跬步,不至千里!
展开
-
单例模式
单例设计模式保证一个类只有一个实例,并提供一个全局的访问点,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例实现条件: 1.static sIntance 2.private SingleInstance(){} 3.static外部访问点实现单例的两种方式:懒汉式:实现对象的延迟加载,有3中实现方式1.双重锁判断,保证线程安全pub原创 2016-04-30 23:14:20 · 337 阅读 · 0 评论 -
状态模式/Android状态机/微信多人语音
最近在做类似微信多人语音,视频聊天功能,用到了Android的状态机,借此写写自己的理解状态模式对状态模式的理解:不同的状态对应不同的行为,当一个对象的状态改变了,那么该对象的行为也随之改变!通过将状态封装成一个类,然后去控制对象的行为,这就是状态模式!解决什么问题:一个事物有很多种状态,如果不使用状态模式,那么在执行具体的操作的时候,就会有很多的if/else 或者swit...原创 2018-03-18 12:04:03 · 713 阅读 · 0 评论 -
设计模式之原型模式
原型模式原型模式是一种创建型模式,这个原型就是创建实例的一个样板。原型模式就是利用这个样板来拷贝出一个与其一样的实例,也就是“克隆”。应用原型模式主要用来解决复杂对象创建对象时的资源损耗,使运行程序更加高效。应用场景:1.类初始化需要消耗太多的资源,通过原型拷贝可以避免这些消耗2.new一个对象时需要繁琐的数据准备和访问权限3.一个对象需要给其他地方调用,并且会对这个对象进行修改,原型拷贝可以拷原创 2016-11-18 22:56:46 · 278 阅读 · 0 评论 -
状态模式
状态模式状态模式表示事物的行为是由状态来决定的,不同的状态有不同的行为。 状态模式的作用就是,当对象的内部状态发生改变时,其行为也随之改变。举例说明:1.我们的电视遥控器可以控制电视的开关,当打开开关时,可以点击音量,下一频道等操作,当关闭开关时,按住这些按钮是不会有任何响应行为的,也就是说电视的开关状态不同,其行为也不同.2.我们的很多app都需要登录,如果没有登录就不能做一些操作.比如:玩微原创 2016-11-30 00:08:23 · 308 阅读 · 0 评论 -
从AlertDialog看Builder模式
Builder模式我们知道建造者模式,是将对象的创建过程与它的表示相分离开来,使得同样的创建过程有着不同的表示.它允许用户在不知道产品内部的构建细节,可以精细的控制产品的产品的构造流程.Builder模式的组成产品类的抽象类Builder抽象类以及具体的BuilderDirector指挥者这么说比较抽象,我们来看一看AlertDialog的源码就知道Builder模式是怎么实现的!AlertD原创 2016-11-17 01:18:39 · 1076 阅读 · 0 评论 -
代理模式之静态代理
代理模式为其他对象提供一种代理,以达到对这个对象的访问控制。 可以理解为一个客户不想或者不能直接访问一个对象,可以通过代理来作为中介来实现对这个对象的访问。结构图AbstractObject:定义了ProxyObject和RealObject的公用的接口,这样在任何使用RealObject的地方都可以用ProxyObject。ProxyObject:保存了RealObject的一个引用,通原创 2016-08-07 23:04:38 · 339 阅读 · 4 评论 -
ChainOfResponsibility--责任链模式
责任链模式一条请求从发送端到接受端,或者说从客户端发送到服务器,有多个对象有机会进行处理,这些对象形成一条链,依次对请求进行处理,直到一个对象对它处理完成。举例: 邮寄包裹:从发货起到收获会经过多次的分拣和处理。 网络程序过滤(和谐):从客户端到服务器可能会经过多个过滤器过滤 申请加薪:部门经理,经理,总经理...的请示结构图请求从一端到一端,经过过滤器的过滤,最后达到终点原创 2016-07-09 19:20:18 · 242 阅读 · 0 评论 -
建造者设计模式
建造者模式将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示好处: 将产品的生产部分化,流水线化,然后组装产品,有利于产品的完整.... 3个类: 产品类(一个产品由很多个部件组成) 建造者类(将产品的创建流水线话,比如一台生产一台电脑,我们分别需要生产主板,电源,....) 指挥者类(用来指挥建造过程,怎么样去生产产品,需要生产那些原创 2016-05-03 22:51:30 · 429 阅读 · 0 评论 -
工厂模式
简单工厂:为实现同一个接口的类创建对象,工厂类是核心类,由工厂类决定创建那个类的对象 缺点: 当需要扩展的时候,就需要创建实体类,改动工厂类,增加分支,不利于程序的扩展和维护,也违反了开放闭包的原则public class Operation { public double getReslt(double a,double b); } public cl原创 2016-05-02 11:17:17 · 322 阅读 · 0 评论 -
访问者设计模式
访问者设计模式:##被访问者:有一些稳定的结构对象,提供accept方法供访问者进行访问##访问者:一些访问者,有一个visitor方法实现对对象的访问,不同的对象会做出不同的反应!##应用公司年终奖考核:被访问者有:程序员,产品经理(accept(Visitor))访问者:CEO,CTO(visit(…))CEO可能只会关注KPI,CTO可能只会关注程序员的KPI+代码量,产品...原创 2019-07-15 13:29:35 · 229 阅读 · 0 评论