Java设计模式(一)----单例模式

一、特点:

1、单例类只能有一个实例。

2、单例类必须自己创建自己的唯一实例。

3、单例类必须给所有其他对象提供这一实例。

单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

二.分类

(一)、懒汉式单例

//懒汉式单例类.在第一次调用的时候实例化自己

Singleton通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过getInstance()方法访问。

(事实上,通过Java反射机制是能够实例化构造方法为private的类的,那基本上会使所有的Java单例实现失效。此问题在此处不做讨论,姑且掩耳盗铃地认为反射机制不存在。) 点击阅读此篇

Java设计模式(二)----建造者模式

一、 概念

建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。

1、产品的内部表象

一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,它们通常又叫做产品的内部表象(internal representation)。不同的产品可以有不同的内部表象,也就是不同的零件。使用建造模式可以使客户端不需要知道所生成的产品有哪些零件,每个 产品的对应零件彼此有何不同,是怎么建造出来的,以及怎么组成产品。

2、对象性质的建造

有些情况下,一个对象的一些性质必须按照某个顺序赋值才有意义。在某个性质没有赋值之前,另一个性质则无法赋值。这些情况使得性质本身的建造涉 及到复杂的商业逻辑。这时候,此对象相当于一个有待建造的产品,而对象的这些性质相当于产品的零件,建造产品的过程是建造零件的过程。由于建造零件的过程 很复杂,因此,这些零件的建造过程往往被“外部化”到另一个称做建造者的对象里,建造者对象返还给客户端的是一个全部零件都建造完毕的产品对象。点击阅读此篇

Java设计模式(三—四)----工厂模式

工厂模式

在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。在这些情况,新对象的建立就是一个“过程”,不仅是一个操作,像一部大机器中的一个齿轮传动。

模式的问题:你如何能轻松方便地构造对象实例,而不必关心构造对象实例的细节和复杂过程呢?

解决方案:建立一个工厂来创建对象

一、引言

1)还没有工厂时代:假如还没有工业革命,如果一个客户要一款宝马车,一般的做法是客户去创建一款宝马车,然后拿来用。

2)简单工厂模式:后来出现工业革命。用户不用去创建宝马车。因为客户有一个工厂来帮他创建宝马.想要什么车,这个工厂就可以建。比如想要宝马系列车。工厂就创建这个系列的车。即工厂可以创建产品。

3)工厂方法模式时代:为了满足客户,车系列越来越多,奔驰等系列,一个工厂无法创建所有的车系列。于是由单独分出来多个 具体的工厂。每个具体工厂创建一种系列。即具体工厂类只能创建一个具体产品。

4)抽象工厂模式时代:随着客户的要求越来越高,车进行分类,分为商务车和运动车两个族点击阅读此篇

Java设计模式(五)----原型模式

一、概述

定义:原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。简言之:就是复制粘贴。这就是选型模式的用意。

二、结构

原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:

1、实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接 口的类上使用clone方法。在java虚拟机中,只有实现了这个接口的类才可以被拷贝,否则在运行时会抛出 CloneNotSupportedException异常。

2、重写Object类中的clone方法。Java中,所有类的父类都是 Object类,Object类中有一个clone方法,作用是返回对象的一个拷贝,但是其作用域protected类型的,一般的类无法调用,因 此,Prototype类需要将clone方法的作用域修改为public类型。点击阅读此篇

Java设计模式(六)----适配器模式

1、概述

适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。

2、适配器模式的用途

即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

下面是两个典型例子

点击阅读此篇

Java设计模式(七)----装饰模式

一、概述

1.装饰模式(Decorator)的定义:又名包装(Wrapper)模式,装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。

2.装饰模式以对客户端透明的方式动态的给一个对象附加上更多的责任。换言之客户端并不会觉的对象在装饰前和装饰后有什么区别。

3.装饰模式可以在不创造更多的子类的模式下,将对象的功能加以扩展。

二、装饰模式的结构

装饰模式的类图如下:

点击阅读此篇

Java设计模式(八)----代理模式

代理模式

1、生活中:

代理就是一个人或者一个组织代表其他人去做一件事的现实生活中的。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

2、官方:

代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用

一、静态代理

类图结构如下

点击阅读此篇

Java设计模式(九)----外观模式

一、定义

Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。

二、结构

门面(Facade)角色 :客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。

子系统(SubSystem)角色 :可以同时有一个或者多个子系统。每个子系统都不是一个单独的类,而是一个类的集合(如上面的子系统就是由SystemA、SystemB、 SystemC三个类组合而成)。每个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,门面仅仅是另外一 个客户端而已。点击阅读此篇

Java设计模式(十)----桥接模式

一、定义

将抽象部分与实现(行为)部分分离,使它们都可以独立的变化。

桥接模式的做法是把变化部分(实现)抽象出来,使变化部分与主类(抽象)分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类(如下面的引擎类)来组合不同维度上的变化,通过这种组合来满足业务的需要。

二、结构

图-桥接模式结构图

java怎么调用另一个类的方法_Java设计模式:十篇,代码小白必看相关推荐

  1. java怎么调用另一个类的方法_java如何调用另一个类的方法

    java调用另一个类的方法:1.类方法用static修饰,代码为[public static void sayStatic()]:2.没有static修饰的方法,代码为[ public void sa ...

  2. java怎么调用另一个类的方法_在一个类中访问另一个类的方法

    在一个类中访问另一个类的方法 由于Java应用程序是由若干个类构成的,因此经常需要在一个类中访问另一个类中的成员和方法,请问应该如何在一个类中访问另一个类的方法?下面是由百分网小编为大家整理的在一个类 ...

  3. java用if语句调用方法_J2SE中main函数中的if语句想要调用另一个类的方法怎么能实现?...

    日常生活中,要完成一件复杂的功能,我们总是习惯把"大功能"分解为多个"小功能"以实现.在C++程序的世界里,"功能"可称呼为"函数 ...

  4. js 调用另一个类的方法_一个隐藏在方法集和方法调用中且易被忽略的小细节

    来自公众号:新世界杂货铺 作为一个长期从事Go语言开发的程序猿,笔者不敢说自己是老油条但也勉强算一个小油条.然而就在今天,笔者研究TLS/SSL握手源码的时候,突然灵光一闪,想到了一个和自己认知不符的 ...

  5. python一个类调用另一个类的方法_python 类静态方法实例化另一个类对象的问题?...

    Logger是使用logging封装的一个日志类, 每次使用的时候都要实例化一下: logger = Logger().getLogger() logger.info(' message ') 不想每 ...

  6. 在一个类里调用另一个类的方法

    其中的一种方法是,比如在CameraControllerDelegate类中调用ControllerPipActivity类中的方法 可以先在CameraControllerDelegate中定义一个 ...

  7. java查询类提供的方法_查询一个类的方法和构建器的JAVA程序

    查询一个类的方法和构建器的JAVA程序 JAVA语言的类库中的类不计其数,其中设计的方法更是不胜其多,这是任何一个教科书--无论它是多么详尽--所不能穷尽的.如果我们要使用某个类,要查询它的构建器的用 ...

  8. spring同一个类中,一个方法调用另外一个注解(@Transactional)方法时,注解失效

    title: "spring同一个类中,一个方法调用另外一个注解(@Transactional)方法时,注解失效" url: "https://wsk1103.githu ...

  9. 【Python——类】 同一个类中一个函数里调用另一个函数的方法

    [Python-类] 同一个类中一个函数里调用另一个函数的方法 class Solution:def a(self):self.b() # 注意这种写法:self.类名def b(self):prin ...

最新文章

  1. 转:Oracle 应用服务器 MapViewer 10.1.2截图
  2. 什么样的技术人员更容易接到软件开发项目?(论干私活儿)
  3. 【sublime text3】破解 最近破解码 /激活成功,但是过一会就提示激活码失效的 Build3143...
  4. Android adb命令,linux中各种命令
  5. getprofile()获取不到路径_做一款RPG游戏,几乎都会用到的Python坐标最短路径计算...
  6. Enterprise Library: Logging and Instrumentation Application Block概述
  7. java jar killed_我的Java应用程序被OOMKilled了,原因竟是这样?
  8. Joey Sturgis Tones Soar for Mac(音效延迟插件)
  9. 让你博客的代码显示得更酷
  10. svm多分类python代码_SVM算法的理解及其Python实现多分类和二分类
  11. xposed框架_免root用Xposed框架!安卓用户一定要学会
  12. Element plus设置日历每周第一天从周一开始
  13. 132 django模版文件的使用
  14. word文档docx转为pdf文件,在Linux操作系统上也能正常显示中文
  15. 图片怎么缩小到300k?如何将图片缩小到300k以内?
  16. 我100米跑了7秒会不会太慢了
  17. Android 高德地图给指定坐标显示图片,以及聚合显示
  18. 股指期货交易流程(股指期货交易规则详解)
  19. ACL’21 | 对话系统也要进军多模态了!
  20. 宝塔Linux面板使用

热门文章

  1. qt msvc编译中文乱码解决
  2. 初步学习Django-第八篇:ORM常用操作
  3. python笔记3:依次输入3个数排序打印(升序)
  4. Django数据库连接丢失问题
  5. git提交本地代码到新分支
  6. docker运行storm及wordcount实例
  7. java - 建造者模式
  8. cc1plus.exe: error: unrecognized command line option -fno-keep-inline-dllexport
  9. 在XML drawable中引用自定义颜色
  10. C/C++获取文件大小