
设计模式
dysfzl
KO大力土
展开
-
代理模式1
代理模式(Proxy Pattern)是指为其他对象提供一种代理,以控制对这个对象的访问,属于结构型模式。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。一般包含三种角色:抽象主题角色(Subject)∶抽象主题类的主要职责是声明真实主题与代理的共同接口方法,该类可以是接口也可以是抽象类;真实主题角色(RealSubject):该类也被称为被代理类,该类定义了代理所表示的真实对象,是负责执行系...原创 2021-07-14 22:38:49 · 131 阅读 · 0 评论 -
建造者模式
建造者模式的应用场景建造者模式适用于一个具有较多的零件的复杂产品的创建过程,由于需求的变化,组成这个复杂产品的各个零件经常猛烈变化,但是它们的组合方式却相对稳定。建造者模式适用于以下几种场景:1、相同的方法,不同的执行顺序,产生不同的结果时2、多个部件或零件,都可以装配到一个对象中,但是产生的结果又不相同。3、产品类非常复杂,或者产品类中的调用顺序不同产生不同的作用。4、当初始化一个对象特别复杂,参数多,而且很多参数都具有默认值时。建造者模式的链式写法建造者模式通常是采用链式.原创 2021-05-24 22:41:45 · 140 阅读 · 0 评论 -
浅克隆与深克隆
继上篇原型模式,这里继续原型模式中的浅克隆与深克隆浅克隆对于对象中的引用类型,他只复制了引用对象的内存地址,复制的不是他的值。下面我们看一个具体的原型模式类的写法,在ConcretePrototype原型类中,添加List引用类型。public class ConcretePrototype implements Cloneable { private int age; private String name; private List<String> cour...原创 2021-05-22 11:54:31 · 210 阅读 · 1 评论 -
原型模式
原型模式(Prototype Pattern)是指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,属于创建型模式。原型模式的核心在于拷贝原型对象。以系统中已存在的一个对象为原型,直接基于内存二进制流进行拷贝,无需再经历耗时的对象初始化过程(不调用构造函数),性能提升许多。当对象的构建过程比较耗时时,可以利用当前系统中已存在的对象作为原型,对其进行克隆(一般是基于二进制流的复制),躲避初始化过程,使得新对象的创建时间大大减少。下面我们看一个标准的原型模式的写法。定义原型接口//原创 2021-05-17 22:46:25 · 146 阅读 · 0 评论 -
破坏单例
继上篇懒汉式单例模式,线程安全与性能都有所保障了,但是还会有其它方式破坏单例场景吗?答案是肯定的。反射破坏单例按静态内部类单例为例,虽然单独的构造方法用了private,但是我们可以通过反馈强制来访问,然后再调用getInstance()方法,创建出两个不能的实例,请看测试类代码。public class InnerClassTest { public static void main(String[] args) throws NoSuchMethodException, Secur..原创 2021-05-10 22:20:29 · 176 阅读 · 0 评论 -
懒汉式单例模式
继续上一篇饿汉式单例模式为了解决饿汉式单例模式,带来的内存占用问题,于是就出现了懒汉式单例的写法,懒汉式单例模式的特点是,单例对象要在被使用时才会初始化,下面看懒汉式单例模式的简单实现。懒汉单例,在测试时可以将断点打在创建懒汉单例处。public class LazySimpleSingleton { private static LazySimpleSingleton lazySimpleSingleton = null; private LazySimpleSingleton...原创 2021-05-07 22:29:26 · 385 阅读 · 1 评论 -
饿汉式单例模式
单例模式( Singleton Pattern )是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。单例模式在现实生活中应用也非常广泛,例如,总统,班主任等。J2EE标准中的ServletContext 、ServletContextConfig 等、Spring框架应用中的。...原创 2021-05-07 21:51:18 · 2503 阅读 · 0 评论 -
工厂方法模式
工厂方法模式(Fatory Method Pattern)是指定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。在工厂方法模式中用户只需要关心所需产品对应的工厂,无须关心创建细节,而且加入新的产品符合开闭原则。工厂方法模式主要解决产品扩展的问题,在简单工厂中,随着产品链的丰富,如果每个课程的创建逻辑有区别的话,工厂的职责会变得越来越多,有点像万能工厂,并不便于维护。根据单一职责原则我们将职能继续拆分,专人做专事。...原创 2021-04-27 21:49:30 · 88 阅读 · 0 评论 -
简单工厂模式
简单工厂模式简单工厂模式(Simple Factory Pattern)是指由一个工厂对象决定创建出哪一种产品类的实例, 简单工厂模式(简单工厂模式)是指由一个工厂对象决定创建出哪一种产品类的实例。但它不属于GOF 23种设计模式。简单工厂适用于工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心。简单工厂也有它的缺点,工厂类的职责相对过重,不易于扩展过于复杂的产品结构。 简单工厂也有它的缺点:工厂类的职责相对过重,不易于扩展过于复杂的产品结构。...原创 2021-04-26 21:52:15 · 98 阅读 · 0 评论 -
设计模式分类
总体来说设计模式分为三大类:创建型模式:工厂模式,单例模式,原型模式结构型模式:适配器模式,装饰器模式,代理模式行为型模式:策略模式,模板模式,委派模式,观察者模式...原创 2021-04-26 21:32:08 · 88 阅读 · 0 评论 -
软件设计七原则简介
开闭原则:对扩展开放,对修改关闭依赖倒置原则:通过抽象使各个类或者模块不相互影响,实现松耦合单一职责原则:一个类型,接口,方法只做一件事接口隔离原则:尽量保证接口的纯洁性,客户端不应该依赖不需要的接口迪米特法则:简称最少知道原则,一个类对其所依赖的类,知道的越少越好里氏替换原则:子类可以扩展父类的功能,但不去改变父类原有的功能合成复用原则:尽量使用对象组全,聚合,而不使用继承关系达到代码复用的目的...原创 2021-04-26 20:44:52 · 87 阅读 · 0 评论 -
设计模式--装饰器模式
装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。比如,我们砌的墙,第一层是基础的砖组成,第二层用砂石进行填补,第三层就用石灰进行漂白,等等还可以做更多的装饰。同样的,经过装饰后的墙,本质上还是墙,只是说变得更加丰富了。 关键代码:接口,装饰器,具体装饰类,被装饰类。 具体实现:先...原创 2019-01-14 17:39:26 · 133 阅读 · 0 评论 -
设计模式--代理模式
代理模式:在代理模式(Proxy Pattern)中,就是一个类代表另一个类的功能引用,如果想在访问一个类时做一些控制(安全、验证),就用代理模式;注意区别:1、和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。 2、和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。按照代理方式:分为静态代理、JDK动态代理,CGLIB动态代理;...原创 2019-01-21 16:56:56 · 259 阅读 · 0 评论