
设计模式
文章平均质量分 86
设计模式
六六学java
努力成为全栈程序员
展开
-
【设计模式】创建型-抽象工厂模式
正因为抽象工厂模式存在“开闭原则”的倾斜性,它以一种倾斜的方式来满足“开闭原则”,为增加新产品族提供方便,但不能为增加新产品结构提供这样的方便,因此要求设计人员在设计之初就能够全面考虑,不会在设计完成之后向系统中增加新的产品等级结构,也不会删除已有的产品等级结构,否则将会导致系统出现较大的修改,为后续维护工作带来诸多麻烦。抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式需要面对多个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的 产品对象的创建。原创 2023-04-03 16:42:27 · 1142 阅读 · 0 评论 -
【设计模式】创建型-工厂方法模式
在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。ConcreteFactory(具体工厂):它是抽象工厂类的子类,实现了抽象工厂中定义的工厂方法,并可由客户端调用,返回一个具体产品类的实例。工厂方法模式提供一个抽象工厂接口来声明抽象工厂方法,而由其子类来具体实现工厂方法,创建具体的产品对象。在讲解工厂方法模式之前先说一下简单工厂模式的缺点。原创 2023-04-03 14:23:13 · 468 阅读 · 0 评论 -
【设计模式】简单工厂模式
Product(抽象产品角色):它是工厂类所创建的所有对象的父类,封装了各种产品对象的公有方法,它的引入将提高系统的灵活性,使得在工厂类中只需定义一个通用的工厂方法,因为所有创建的具体产品对象都是其子类对象。经过简单工厂模式重构后可以发现,系统中的类的个数增加了,但是每一种支付处理方式都封装在单独的类中,而且工厂类中只有简单的判断逻辑代码,不需要关心具体的业务处理逻辑,很好的满足了。,这样后续如果想要增加新的支付方式,就只需要新增一个类,以及在工厂类中的判断逻辑中增加几行简单的代码就可以实现。原创 2023-04-03 13:41:13 · 428 阅读 · 0 评论 -
【设计模式】创建型-原型模式
通过序列化实现的拷贝不仅可以复制对象本身,而且可以复制其引用的成员对象,因此通过序列化将对象写到一个流中,再从流里将其读出来,可以实现深克隆。如果原型对象的成员变量是引用类型,则将引用对象的地址复制一份给克隆对象,也就是说原型对象和克隆对象的成员变量指向相同的内存地址。在深克隆中,无论原型对象的成员变量是值类型还是引用类型,都将复制一份给克隆对象,深克隆将原型对象的所有引用对象也复制一份给克隆对象。抽象原型类是定义具有克隆自己的方法的接口,是所有具体原型类的公共父类,可以是抽象类,也可以是接口。原创 2023-04-03 12:34:42 · 453 阅读 · 0 评论 -
【设计模式】创建型-单例模式
类的静态属性只会在第一次加载类的时候初始化,JVM 帮助我们保证了线程的安全性,在类进行初始化时,别的线程是无法进入的。方式二不是一个实例,线程不安全,原因是一个线程进入了空判断,还没往下执行,另一个线程来了,其中一个线程拿到锁,往下执行创建了实例,执行完释放锁后,另一个线程也往下执行了并创建对象,两者创建的对象并不一致。单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。原创 2023-04-03 11:50:20 · 714 阅读 · 1 评论 -
【设计模式】迪米特法则
迪米特法则(Law of Demeter, LoD):一个软件实体应当尽可能少地与其他实体发生相互作用。原创 2023-03-30 14:07:28 · 1049 阅读 · 0 评论 -
【设计模式】合成复用原则
合成复用原则(Composite Reuse Principle, CRP):尽量使用对象组合,而不是继承来达到复用的目的。原创 2023-03-30 14:07:16 · 1585 阅读 · 0 评论 -
【设计模式】依赖倒转原则
高层模块不应该依赖底层模块,他们都应该依赖抽象。抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。原创 2023-03-30 14:06:49 · 266 阅读 · 0 评论 -
【设计模式】开闭原则
开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。开闭原则由于1988年提出,其定义如下:开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。原创 2023-03-30 14:06:32 · 1049 阅读 · 0 评论 -
【设计模式】里氏替换原则
里氏代换原则由2008年图灵奖得主、美国第一位计算机科学女博士Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing教授于1994年提出。其严格表述如下:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1代换o2时,程序P的行为没有变化,那么类型S是类型T的子类型。原创 2023-03-30 13:55:39 · 545 阅读 · 0 评论 -
【设计模式】单一职责原则
面向对象设计原则是学习设计模式的基础,每一种设计模式都符合某一种或多种面向对象设计原则。通过在软件开发中适用这些原则,可以提高软件的可维护性和可复用性,让我们可以设计出更加灵活也更容易拓展的软件系统,实现可维护性服用的目标设计原则名称设计原则简介重要性单一职责原则类的职责要单一,不能将太多的职责放在一个类中★★★★☆开闭原则软件实体对拓展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去拓展其功能★★★★★里氏替换原则。原创 2023-03-30 13:55:09 · 405 阅读 · 0 评论