一、工厂模式
工厂模式就是将程序中创建对象的操作单独出来处理,这种模式的灵活性很高,如果以后还有子类的扩充,只需要修改工厂类即可。
例如:
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 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...
主要为大家详细介绍了C++和java设计模式之单例模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本资源可以作为《软件设计模式与体系结构》的复习使用,包含几种常见的设计模式的样例及其代码,需要的朋友可以下载哦!
第二部分则专注于各种具体的设计模式及其在JavaScript语言中的应用,主要介绍了工厂模式、桥接模式、组合模式、门面模式等几种常见的模式。为了让每一章中的示例都尽可能地贴近实际应用,书中同时列举了一些...
本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为了工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,第一个章节讲解一个编编程模式,说明此模式的用意、...
单例模式,完整介绍单例模式的几种创建方式 以及对比优缺点,引用spring 源码简单分析 框架如何保证单例
本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为了工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,第一个章节讲解一个编编程模式,说明此模式的用意、...
说起设计模式,很多编程语言的设计模式大同小异,而且设计模式很多,这里介绍一下java的几种常见的设计模式,其实设计模式是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便,所以要降低依赖,降低耦合...
下面小编就为大家带来一篇浅谈Java中几种常见的比较器的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
准备面试Java开发岗位?不要担心!...解释什么是Java的设计模式,并列举几个常用的设计模式及其应用场景。 这些题目涵盖了Java开发中的核心概念和常见问题,帮助您准备面试。祝您面试成功,取得理想的职位!
准备面试Java开发岗位?不要担心!...解释什么是Java的设计模式,并列举几个常用的设计模式及其应用场景。 这些题目涵盖了Java开发中的核心概念和常见问题,帮助您准备面试。祝您面试成功,取得理想的职位!
准备面试Java开发岗位?不要担心!...解释什么是Java的设计模式,并列举几个常用的设计模式及其应用场景。 这些题目涵盖了Java开发中的核心概念和常见问题,帮助您准备面试。祝您面试成功,取得理想的职位!
用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用...
用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用...
当你面对Gof这本厚厚的书籍的时候 你是否有点厌倦,这些代码 能够给你很好的去理解常见的几种设计模式 让你更好的运用到你的开发中去
- 【Java常用几种加密算法】在[com.gradle.java.encryption](/tree/master/src/main/java/com/gradle/java/encryption)包名下 ;[加密算法测试](/tree/master/src/main/java/com/gradle/java/test) - 【Rxjava的学习...
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. 缓存...