![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计者模式
希乐曼
把学习当成一种习惯
展开
-
设计者模式之单例模式(Singleton Pattern)
单例模式:确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点;隐藏所有的构造方法;属于创建型模式;应用实例:ServletContext,ServletConfig,ApplicationConfig,DBPool;a.饿汉式单例:优点:效率高,性能高;缺点:使用大量的单例,初始化的时候可能造成内存浪费;b.懒汉式单例:(双重判断,if里面synchronized,然后里面if创建实例;可能造成指令重排序,成员变量需要volatitle修饰);c.注册式单例:(Map容器式原创 2021-10-30 21:52:42 · 57 阅读 · 0 评论 -
设计者模式之策略模式(Strategy Pattern)
策略模式(Strategy Pattern)(政策模式):将定义的算法家族.分别封装起来,让它们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户;其实就是一种单一委派的模式,只委派一个;优点:a.符合开闭原则;b.避免使用多重条件转移语句,如if…else…语句,switch…语句;c.使用策略模式可以知道算法的保密性和安全性;缺点:a.客户端必须知道所有的策略,并且自行决定使用哪种策略类;b.代码中会产生非常多策略类,增加维护难度;...原创 2021-10-30 22:21:22 · 55 阅读 · 0 评论 -
设计者模式之原型模式(Prototype Pattern)
原型模式(Prototype Pattern):原型实例制定创建对象的种类,并且通过copy这些实例创建新的对象;调用者不需要知道任何细节,不调用构造函数;属于创建型模式;和单例模式冲突;Cloneable都是浅克隆;深克隆:a.序列化; b.转Json;优点:Java自带的原型模式是基于二进制流的拷贝,比直接new一个对象性能提升很多;缺点:必须配备克隆或者copy方法;适用场景:a.类初始化消耗资源比较多;b.new产生一个对象需要非常繁琐的过程(数据准备,访问权限等);c.原创 2021-10-30 22:14:52 · 62 阅读 · 0 评论 -
设计者模式之工厂模式(Factory Method Pattern)
工厂方法模式(Factory Method Pattern):定义一个创建对象的接口,让实现这个接口的类来决定实例化哪个类;工厂方法让类的实例化推迟到子类中进行;a.简单工厂模式(Simple Factory Pattern):由一个工厂对象决定决定创造出哪一种产品类的实例;属于创建型模式,但是不属于GOF 23中设计者模式;适用场景:工厂类负责创建的对象较少;客户端只需要传入工厂类的参数,无需知道创建对象的逻辑;LoggerFactory,Calendar;优点:解耦,降低了修改代码时候的风原创 2021-10-30 22:12:20 · 80 阅读 · 0 评论 -
设计者模式之桥接模式(Bridge Pattern)
桥接模式(Bridge Pattern)(桥梁模式,接口模式,柄体模式):是将抽象部分与它的具体实现部分分离,使它们可以独立的变化;通过组合建立两个类之间的关系,而不是通过继承;属于结构型模式;组合模式,适配器模式与桥接模式的区别:是一种特殊的组合模式,注重的是形式;适配器解决的是兼容,桥接模式解决的是连接;适用场景:a.在抽象和具体实现之间需要增加更多的灵活性的场景;b.一个类存在多个独立变化的维度,而这多个维度都需要独立进行扩展;c.不希望使用继承,或因为多层继承导致系统类的个数剧增原创 2021-10-30 22:06:31 · 87 阅读 · 0 评论