Java设计模式中有多少种模式
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍Java设计模式中有多少种模式,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java设计模式中有23种模式,下面只对其中五种常用的设计模式进行介绍:1.单例模式
千家信息网最后更新 2025年01月19日Java设计模式中有多少种模式
这篇文章主要介绍Java设计模式中有多少种模式,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
Java设计模式中有23种模式,下面只对其中五种常用的设计模式进行介绍:
1.单例模式(有的书上说叫单态模式其实都一样) :
该模式主要目的是使内存中保持1个对象。
具体看看下面的例子:
package org.sp.singleton; //方法一 public class Singleton { //将自身的实例对象设置为一个属性,并加上Static和final修饰符 private static final Singleton instance = new Singleton(); //将构造方法设置成私有形式 private Singleton() { } //通过一个静态方法向外界提供这个类的实例 public static Singleton getInstance() { return instance; }}//方法二 class Singleton2 { private static Singleton2 instance2 = null; public static synchronized Singleton2 getInstance() { if (instance2 == null) instance2 = new Singleton2(); return instance2; } }
注:这二个Java设计模式实现了一样的功能,但个人推荐采用***种方法。
2.工厂模式
该Java设计模式主要功能是统一提供实例对象的引用。
具体看看下面的例子:
view plaincopy to clipboardprint? public class Factory{ public ClassesDao getClassesDao(){ ClassesDao cd = new ClassesDaoImpl(); return cd; } } interface ClassesDao{ public String getClassesName(); } class ClassesDaoImpl implements ClassesDao { public String getClassesName(){ System.out.println("A班"); } } class test { public static void main(String[] args){ Factory f = new Factory(); f.getClassesDao().getClassesName(); } } public class Factory{ public ClassesDao getClassesDao(){ ClassesDao cd = new ClassesDaoImpl(); return cd; } }interface ClassesDao{ public String getClassesName(); }class ClassesDaoImpl implements ClassesDao { public String getClassesName(){ System.out.println("A班"); } }class test { public static void main(String[] args){ Factory f = new Factory(); f.getClassesDao().getClassesName(); } }
这个是最简单的例子了,就是通过工厂方法通过接口获取对象的引用
3.建造模式
该模式其实就是说,一个对象的组成可能有很多其他的对象一起组成的,比如说,一个对象的实现非常复杂,有很多的属性,而这些属性又是其他对象的引用,可能这些对象的引用又包括很多的对象引用。封装这些复杂性,就可以使用建造模式。
4.门面模式
这个模式个人感觉像是Service层的一个翻版。比如Dao我们定义了很多持久化方法,我们通过Service层将Dao的原子方法组成业务逻辑,再通过方法向上层提供服务。门面模式道理其实是一样的。
具体看看这个例子:
view plaincopy to clipboardprint? interface ClassesDao{ public String getClassesName(); } class ClassesDaoImpl implements ClassesDao { public String getClassesName(){ return "A班"; } } interface ClassesDao2{ public String getClassesName(); } class ClassesDaoImpl2 implements ClassesDao { public String getClasses2Name(){ return "B班"; } } class ServiceManager { private ClassesDao cd = new ClassesDaoImpl(); private ClassesDao2 cd2 = new ClassesDaoImpl2(); public void printOut(){ System.out.println(cd.getClassesName()+" "+cd2.getClassesName()); } }; interface ClassesDao{ public String getClassesName(); }class ClassesDaoImpl implements ClassesDao { public String getClassesName(){ return "A班"; } }interface ClassesDao2{ public String getClassesName(); }class ClassesDaoImpl2 implements ClassesDao { public String getClasses2Name(){ return "B班"; } }class ServiceManager { private ClassesDao cd = new ClassesDaoImpl(); private ClassesDao2 cd2 = new ClassesDaoImpl2(); public void printOut(){ System.out.println(cd.getClassesName()+" "+cd2.getClassesName()); } };
虽然这个例子不全,但基本意思已经很明显了。
5.策略模式
这个模式是将行为的抽象,即当有几个类有相似的方法,将其中通用的部分都提取出来,从而使扩展更容易。
具体看这个例子:
view plaincopy to clipboardprint? package org.sp.strategy; /** * 加法具体策略类 * @author 无尽de华尔兹 * */ public class Addition extends Operation { @Override public float parameter(float a, float b) { return a+b; } } package org.sp.strategy; /** * 除法具体策略类 * @author 无尽de华尔兹 * */ public class Division extends Operation { @Override public float parameter(float a, float b) { return a/b; } } package org.sp.strategy; /** * 乘法具体策略类 * @author 无尽de华尔兹 * */ public class Multiplication extends Operation{ @Override public float parameter(float a, float b) { return a*b; } } package org.sp.strategy; /** * 减法具体策略类 * @author 无尽de华尔兹 * */ public class Subtration extends Operation { @Override public float parameter(float a, float b) { return a-b; } } package org.sp.strategy; /** * 抽象策略类也可以使用接口来代替 * @author 无尽de华尔兹 * */ public abstract class Operation { public abstract float parameter(float a, float b); } package org.sp.strategy; /** * 策略环境类 * @author 无尽de华尔兹 * */ public class Condition { public static final Addition add = new Addition(); public static final Subtration sub = new Subtration(); public static final Multiplication mul = new Multiplication(); public static final Division div = new Division(); } package org.sp.strategy; /** * 测试客户端 * @author 无尽de华尔兹 * */ public class Client { public static void main(String[] args) { float a = 100; float b = 25; System.out.println(Condition.div.parameter(a, b)); } }
以上是"Java设计模式中有多少种模式"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
模式
对象
方法
策略
华尔
华尔兹
设计模式
设计
例子
实例
属性
复杂
个人
内容
功能
就是
工厂
接口
篇文章
门面
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国家网络技术级别
聚源网络技术有限公司
网络安全向上级的汇报讲话
数据库数字不为空
公安机关网络安全考试条件
上海宏云软件开发官网
家庭微型服务器安全问题
对日软件开发的特点
2020年网络安全政策法规
兴安盟定制软件开发
我国现行网络安全法律
lol服务器显示ping
秦皇岛服务器机柜尺寸
网络安全应该考哪些证件
上海项目网络安全
女博士日记软件开发
计算机网络技术的内容分类
数据库语句学习网
网络安全手抄报简单图片大全
在网络安全中保密指的是
出数据库表外
东昌区人民法院网络安全
咸宁市网络安全宣传
企业大数据与网络安全
存储与服务器的区别
过服务器的远程
怎么看2008数据库版本
厦门机器人rpa软件开发
如何开展网络安全保卫工作
2670 服务器