![](https://img-blog.csdnimg.cn/20210107155826675.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java 设计模式
文章平均质量分 65
Java设计模式
一只小熊猫呀
这个作者很懒,什么都没留下…
展开
-
Java设计模式——概述
对设计模式的理解该开始学编程不久,听说过什么事设计模式。有很长时间的编程经验,自己写了很多代码,其中用到了设计模式,但是自己却不知道。学习过了设计模式,发现自己已经在使用了,并且发现了一些新的模式挺好用的。阅读了很多别人写的源码和框架,在其中看到别人设计模式,并且能够领会设计模式的精妙和带来的好处。代码写着写着,自己都没有意思到使用了设计模式,并且熟练的写了出来。2、设计模式介绍设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方原创 2020-09-24 11:10:22 · 1351 阅读 · 0 评论 -
Java设计模式——单一责任原则(实例)
1、基本介绍对类来说,即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分为A1,A22、应用实例2.1未使用单一责任原则在方式1的run方法中,飞机在公路上运行。明显违反了单一责任原则package com.weirdo.principle.singleResponsibility;public class SingleResponsibility1 { public static v原创 2020-09-16 13:51:00 · 1427 阅读 · 0 评论 -
Java设计模式——接口隔离原则(实例)
1、基本介绍客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。2、应用实例2.1未使用接口隔离原则类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类D[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XV6pJJh4-1600238346449)(C:/Users/GXL/AppData/Local/Temp/Image.png)]package com.weirdo.segregation;pu原创 2020-09-17 09:34:34 · 1423 阅读 · 0 评论 -
Java设计模式——依赖倒转原则(实例)
1、基本介绍高层模块不应该依赖低层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象依赖倒转的中心思想是面向接口编程依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中,抽象指的是接口或抽象类,细节就是具体的实现类使用接口或抽象类的目的是制定好的规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成2、应用实例编程完成Person接收消息的功能2.1未遵循依赖倒转原则原创 2020-09-18 09:32:57 · 1430 阅读 · 0 评论 -
依赖关系传递的三种方式(实例)
1、接口传递package com.weirdo.principle.inversion.improve.DependencyPass1;public class DependencyPass1 { public static void main(String[] args) { ChangHong changHong = new ChangHong(); OpenAndClose openAndClose = new OpenAndClose();原创 2020-09-23 16:49:34 · 1988 阅读 · 0 评论 -
Java设计模式——迪米特法则(实例)
1、基本介绍一个对象应该对其它对象保持最少的了解类与类越密切,耦合度越大迪米特法则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供public方法,不对外泄露任何信息迪米特法则还有个更简单的定义:至于直接的朋友通信直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,这两个对象就是朋友关系。耦合的方式很多:依赖、关联、组合、聚合等。其中成员变量,方法参数,方法返回值中的类为直接朋友,而出现在原创 2020-09-23 16:53:05 · 2114 阅读 · 1 评论 -
Java设计模式——开闭原则(实例)
1、基本介绍开闭原则是编程中最基础、最重要的设计原则一个软件实体,如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则。2、应用实例绘图功能,类图如下:2.1未遵循开闭原则优点是比较好理解,简单操作。缺点是违反了设计模式的ocp原则,即对扩展开放(提供方),对修改关闭(使用方)。即当给原创 2020-09-24 15:05:07 · 7004 阅读 · 2 评论 -
Java设计模式——单例设计模式(八种实例)
1、基本介绍采取一定的方法保证在整个的软件系统中,对某个类智能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactor,他充当数据存储源的代理,并负责创建Session对象。SessionFactor并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactor就够,这时就会使用到单例模式。2、单例模式的八种方式饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全,同步方法)懒汉式(线程原创 2020-09-27 13:53:37 · 1368 阅读 · 0 评论 -
Java设计模式——工厂模式(简单工厂模式实例)
1、基本介绍简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式中最简单实用的模式简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为在软件开发中,当用到大量的创建某种、某类或某批对象时,就会使用到工厂模式。2、使用简单工厂模式抽象Pizza类package com.weirdo.factory.simplefactory.pizzastore.pizza;//将Pizza 类做成抽象pu原创 2020-09-30 14:03:04 · 1299 阅读 · 1 评论 -
Java设计模式——工厂模式(工厂方法模式实例)
1、需求客户在点披萨时,可以点不同口味的披萨,比如:北京的奶酪披萨、北京的胡椒披萨、伦敦的奶酪披萨、伦敦的胡椒披萨2、思路使用肩带工厂模式,创建不同的简单工厂类,比如BJPizzaSimpleFactory、LDPizzaSimpleFactory等,从当前这个案例来说也是可以的,但是考虑到项目的规模,以及软件的可维护性、可扩展性并不是特别好使用工厂方法模式3、工厂方法模式介绍设计方案:将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现。工厂方法模式:定义了一个创建原创 2020-11-30 17:27:10 · 1316 阅读 · 1 评论 -
Java设计模式——工厂模式(抽象工厂模式实例)
1、基本介绍其定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合从设计层面看,抽象工厂模式就是对简单工厂模式的改进(或称为进一步的抽象)将工厂抽象成两层,AbsFactory(抽象工厂)和具体实现的工厂子类。可以根据创建对象类型使用对应的工厂子类。这样将单个的简单工厂类变成了工厂簇,更有利于代码的维护和扩展2、UML类图3、应用实例Pizzapackage com.weirdo.factory.abs原创 2020-11-30 17:33:46 · 2606 阅读 · 1 评论 -
Java设计模式——原型模式(实例)
1、克隆羊问题现有一只羊,姓名:tom,年龄:1,颜色:白色。克隆10只属性完全相同的羊2、传统方式实例Sheeppackage com.weirdo.prototype;public class Sheep { private String name; private int age; private String color; public Sheep(String name, int age, String color) { th原创 2020-12-05 16:31:47 · 1933 阅读 · 2 评论 -
Java设计模式——里斯替换原则(实例)
1、OO中继承性的思考和说明父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然它不强制要求所有的子类必须遵循这些契约,但是如果子类对这些已经实现的方法任意修改,就会对整个继承体系造成破坏。继承在给程序设计带来便利的同时,也带来了弊端。比如使用继承会给程序带来侵入性,程序的可移植性降低,增加对象间的耦合性,如果一个类被其它的类所继承,则当这个类需要修改是,必须考虑到所有的子类,并且父类修改后,所有涉及到子类的功能都有可能产生故障。思考:在编程中如何正确的使用继承?==>里氏替换原则2原创 2020-09-24 15:07:15 · 1392 阅读 · 0 评论