`
yaolinnan
  • 浏览: 56807 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

java常见的几种设计模式

 
阅读更多

一、工厂模式

工厂模式就是将程序中创建对象的操作单独出来处理,这种模式的灵活性很高,如果以后还有子类的扩充,只需要修改工厂类即可。

例如:

abstract class Fruit{
	public abstract void eat();
}

class Apple extends Fruit{
	@Override
	public void eat() {
		System.out.println("我吃的是苹果");
	}
}

class Orange extends Fruit{
	@Override
	public void eat() {
		System.out.println("我吃的是橘子");
	}
}

public class FruitFactory {

	public static Fruit getInstance(String className){
		if("apple".equals(className))
			return new Apple();
		else if("orange".equals(className))
			return new Orange();
		else
			return null;
	}
	
	public static void main(String[] args) {
		Fruit f=FruitFactory.getInstance("apple");
		f.eat();
	}
}

 首先创建了一个水果的抽象类,定义了一个抽象方法eat(),之后定义了苹果和橘子两个水果的子类,具体实现eat方法。FruitFactory就是一个水果工厂类,根据参数的不同,返回不同的水果子类。

 

二、代理模式

代理设计就是指由一个代理主题来操作真实的主题,真实主题执行具体的业务操作,而代理主题负责其他业务的处理,类似于我们生活中通过代理来上网。

interface Network{
	public void getNet();
}

class Real implements Network{
	@Override
	public void getNet() {
		System.out.println("获得网络,成功上网。");
	}
	
}

class Proxy implements Network{
	public Network network;
	
	public Proxy(Network network){
		this.network=network;
	}
	private void check(){
		System.out.println("用户名密码正确");
	}
	@Override
	public void getNet() {
		this.check();
		network.getNet();
	}
	
}

public class NetworkProxy {
	public static void main(String[] args) {
		Network network=new Proxy(new Real());
		network.getNet();
	}

}

 首先定义一个上网接口,只有一个获取网络的方法。之后定义一个真实上网的类和代理上网的类都实现这个接口,而在代理类中需要设置被代理的真实操作并增加自己的业务。

 

三、适配器模式

在java中,一个类要实现一个接口必须覆写接口的所有抽象方法,如果一个接口定义的抽象方法过多,子类根本不需要这么多方法,这个时候我们可以定义一个中间的过渡,这个过渡类并不能直接被使用,则将其定义为抽象类,也就是适配器类。

interface Window{
	public void open();
	public void close();
	public void browse();
	public void play();
}

abstract class WindowAdapter implements Window{
	public void open(){};
	public void close(){};
	public void browse(){};
	public void play(){};
}

class Window1 extends WindowAdapter{
	public void open(){
		System.out.println("系统开启");
	}
	public void close(){
		System.out.println("系统关闭");
	}
}

class Window2 extends WindowAdapter{
	public void browse(){
		System.out.println("上网浏览信息");
	}
	public void play(){
		System.out.println("上网玩游戏");
	}
}
public class AdapterTest {
	public static void main(String[] args) {
		WindowAdapter adapter1=new Window1();
		WindowAdapter adapter2=new Window2();
		adapter1.open();
		adapter2.browse();
		adapter2.play();
		adapter1.close();
	}
}

 定义一个window接口,包含四个抽象方法,之后定义一个适配器类,覆写所有方法,方法体为空,适配器的子类则有选择的实现需要的方法。

 

四、单例模式

单例模式就是确保一个类只能有一个实例,这在spring框架中被广泛使用。

class A{
	private final static A a=new A();

	private A(){//避免使用new实例化对象
		
	}
	
	public static A getInstance(){
		return a;
	}
}

public class SingletonTest {
	public static void main(String[] args) {
		A a=A.getInstance();
		A aa=A.getInstance();
		System.out.println(a==aa);
	}
}

 通过以上例子可以发现,a对象和aa对象是完全相同的,即同一个实例。

精彩科技工作室
分享到:
评论

相关推荐

    java开发的几种常见设计模式

    java开发的几种常见设计模式. 工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new...

    java之 ------ 几种常见的简单设计模式

    几种常见的简单设计模式的详细概要和代码示例。

    Java常见面试题208道.docx

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    C++和java设计模式之单例模式

    主要为大家详细介绍了C++和java设计模式之单例模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    软件设计模式与体系结构(4)多种模式的代码.rar

    本资源可以作为《软件设计模式与体系结构》的复习使用,包含几种常见的设计模式的样例及其代码,需要的朋友可以下载哦!

    JavaScript设计模式 (美)哈梅斯(Harmes,R), (美)迪亚斯(Diaz,D)著 源码+PDF

    第二部分则专注于各种具体的设计模式及其在JavaScript语言中的应用,主要介绍了工厂模式、桥接模式、组合模式、门面模式等几种常见的模式。为了让每一章中的示例都尽可能地贴近实际应用,书中同时列举了一些...

    《Java与模式》

    本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为了工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,第一个章节讲解一个编编程模式,说明此模式的用意、...

    常见设计模式-单例模式

    单例模式,完整介绍单例模式的几种创建方式 以及对比优缺点,引用spring 源码简单分析 框架如何保证单例

    Java与模式(清晰书签版)

     本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为了工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,第一个章节讲解一个编编程模式,说明此模式的用意、...

    Java的常用设计模式

    说起设计模式,很多编程语言的设计模式大同小异,而且设计模式很多,这里介绍一下java的几种常见的设计模式,其实设计模式是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便,所以要降低依赖,降低耦合...

    浅谈Java中几种常见的比较器的实现方法

    下面小编就为大家带来一篇浅谈Java中几种常见的比较器的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Java后端+Java后端中级面试题

    准备面试Java开发岗位?不要担心!...解释什么是Java的设计模式,并列举几个常用的设计模式及其应用场景。 这些题目涵盖了Java开发中的核心概念和常见问题,帮助您准备面试。祝您面试成功,取得理想的职位!

    Java大数据开发+Java大厂面试题

    准备面试Java开发岗位?不要担心!...解释什么是Java的设计模式,并列举几个常用的设计模式及其应用场景。 这些题目涵盖了Java开发中的核心概念和常见问题,帮助您准备面试。祝您面试成功,取得理想的职位!

    Java面试题+Java后端中级面试题

    准备面试Java开发岗位?不要担心!...解释什么是Java的设计模式,并列举几个常用的设计模式及其应用场景。 这些题目涵盖了Java开发中的核心概念和常见问题,帮助您准备面试。祝您面试成功,取得理想的职位!

    JAVA上百实例源码以及开源项目

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

    JAVA上百实例源码以及开源项目源代码

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

    设计模式实例

    当你面对Gof这本厚厚的书籍的时候 你是否有点厌倦,这些代码 能够给你很好的去理解常见的几种设计模式 让你更好的运用到你的开发中去

    Java 知识汇总(资源,工具,笔记,源码,文章,文档分类整理).zip

    - 【Java常用几种加密算法】在[com.gradle.java.encryption](/tree/master/src/main/java/com/gradle/java/encryption)包名下 ;[加密算法测试](/tree/master/src/main/java/com/gradle/java/test) - 【Rxjava的学习...

    java面试题

    70. MVC设计模式 53 71. Hibernate 54 71.1. Hibernate 介绍 54 71.2. Hibernate 实现原理 55 71.3. Hibernate 优点 56 71.4. Hibernate 的缓存体系 56 71.4.1. 一级缓存: 56 71.4.2. 二级缓存: 56 71.4.3. 缓存...

Global site tag (gtag.js) - Google Analytics