一、工厂模式
工厂模式就是将程序中创建对象的操作单独出来处理,这种模式的灵活性很高,如果以后还有子类的扩充,只需要修改工厂类即可。
例如:
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开发的几种常见设计模式. 工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new...
### Java的23种设计模式概述 #### 一、引言 Java作为一种广泛使用的编程语言,在软件开发领域占据着举足轻重的地位。为了更好地组织代码、提高代码的复用性和可维护性,设计模式应运而生。设计模式是一套被反复使用...
下面,我们将深入探讨几种重要的Java设计模式。 1. **单例模式**:保证一个类只有一个实例,并提供全局访问点。这种模式常用于配置中心、线程池等需要全局共享的对象。实现方式有懒汉式(线程不安全)、饿汉式...
Java设计模式是指在Java编程语言中,根据软件工程原理,总结出的一系列在特定情况下用于解决特定问题的模板化代码。...每种设计模式都有其特定的使用场景,开发者需要根据实际情况选择合适的设计模式来解决问题。
为了更好地利用这些服务,开发者们总结了许多有效的设计模式,接下来将简要介绍几种常用的J2EE设计模式。 ##### 2.1 J2EE设计模式简介 J2EE设计模式主要关注于如何在J2EE环境中构建可伸缩、可维护的应用程序。这些...
### Java之几种常见的简单设计模式 #### 设计模式概述 设计模式是一套被广泛采纳的、经过实践检验的代码设计经验总结。它们提供了解决在软件开发过程中经常遇到的复杂问题的标准方法。采用设计模式的目的在于提高...
在软件工程领域,设计模式是一种用于解决常见问题的可重用解决方案。《Java设计模式PDF》是一本由James W. Cooper编写的经典书籍,该书详细介绍了Java编程语言中的设计模式,并通过实际案例深入探讨了这些模式的应用...
以下是对几种设计模式的详细理解和应用。 1. 工厂模式 工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在这个模式中,一个工厂类负责创建对象,而客户端无需知道创建的具体过程。工厂类可以根据...
通过本文,我们将详细介绍几种设计模式,这些模式可以帮助开发人员达到标准化和简化应用程序开发的目的。 #### 二、J2EE及其局限性 J2EE是一项非常成功的技术,它为许多基础任务提供了一致的标准,如数据库连接、...
以下是对标题和描述中提到的几种设计模式的详细解释: 1. **策略模式**:策略模式允许在运行时动态选择算法或策略。它定义了一族算法,并将每个算法封装起来,使它们可以相互替换。在Java中,策略模式通常通过接口...
以下是关于这七种设计模式的详细解释和实例: 1. 单例模式(Singleton): 单例模式确保一个类只有一个实例,并提供一个全局访问点。这在资源管理(如数据库连接)或全局配置时非常有用。以下是一个简单的单例模式...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的模板或蓝图。这些模式在软件工程中被广泛使用,因为它们代表了最佳实践,可以帮助开发者编写更可维护、可扩展和可复用的代码。下面将详细...
### Java设计模式详解 在软件开发领域,设计模式是一种被广泛采用的解决方案,用来解决常见的设计问题。设计模式不仅能够帮助开发者写出可...每种设计模式都解决了特定类型的问题,并且在实际项目中都有着广泛的应用。
下面介绍几种常见的设计模式及其应用场景: 1. **单例模式(Singleton Pattern):** - **定义:** 确保一个类只有一个实例,并提供一个全局访问点。 - **应用场景:** 当需要控制资源访问时,例如数据库连接池、日志...
Elements of Reusable Object-Oriented Software),简称GOF,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者共同编写,书中总结了23种设计模式,被广泛认为是面向对象设计的经典之作。...
以下是三种常见的Java设计模式的详细说明: 1. **单例设计模式** 单例模式确保一个类只有一个实例,并提供全局访问点。这种模式常用于控制资源的共享,如数据库连接池或线程池。单例模式有多种实现方式,包括: ...
### Java设计模式经典教程知识点概览 #### 一、设计模式概述 设计模式是一种软件设计方法,它为软件开发者提供了一种标准化的方式去解决常见的软件设计问题。设计模式的使用可以提高代码的可读性和可维护性,同时...
设计模式是一种软件设计的解决方案,它提供了一种通用的设计思路,帮助开发者解决常见的问题。设计模式可以分为三种层次:架构模式、设计模式和 idioms。架构模式是高层次的设计模式,描述了系统的结构组成和相互...
下面介绍几种常见的设计模式及其在JDK中的应用实例: a) 抽象工厂模式(AbstractFactory) 抽象工厂模式提供一个接口用于创建相关或依赖对象的家族,而不需要明确指定具体类。在JDK中,抽象工厂模式的实例包括: -...
### 关于Java23种设计模式的有趣见解 #### 一、工厂模式(Factory) **定义**:工厂模式是一种创建型设计模式,其中包含一个创建产品族的接口,但允许子类决定实例化哪一个类。工厂方法让类的实例化延迟到子类。 ...