对JAVA设计模式的理解(标题不变,内容经常更新)

本文深入解析工厂模式、原型模式、建造者模式、单例模式、外观模式等五大设计模式,探讨其原理及应用场景,强调低耦合、灵活性与线程安全性,适合软件工程师提升编程技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.工厂模式
  我的理解:一个创建对象实例的接口,可以根据客户端不同的需求创建所需的相应对象实例。
   1.普通工厂:一种工厂类生产多种不同的实例。
   2.抽象工厂:抽象工厂下可创建多种工厂类,每种工厂类生产多种不同的实例。(使用于业务更复杂的场合,更灵活,低耦合)
二.原型模式
  我的理解:根据实际调用Object.clone()方法的方法所在的类,得到这个类的拷贝(相对简单)
三.建造者模式
  我的理解:构建一个一个独立的功能,再用一个单独的模块去组装这些功能,最终返回包含各个独立功能的复杂模块。
            (各个功能彼此独立,组装这些功能和这些独立的功能之间也独立,低耦合)
四.单例模式
  我的理解:说到单例模式,真的不敢太枉加评说,感觉单例模式涉及的底层东西比较多,写出一段堪称完美的单例模式的代码不是个简单的事情,
            主要是在多线程,跨服务器的情况下。
            public class Singleton {
                private Singleton() {};
                private static final Singleton single = new Singleton();
                public static Singleton getInstance() {
                    return single;
                }
            }
            上面这段代码,如果在单个jvm下我认为应该是基本可以实现线程安全的单例,但如果是跨服务器跨jvm的应该就不好用了,
            需要进一步用同步块来控制,如何控制得当,在网上看到了一些,大概是用双重判断空等等,还有用静态内部类的,
            应该可以基本满足需要,例如把上面代码稍微改一下
            public class Singleton {
                private Singleton() {};
                private static class SingletonFactory {
                    private static final Singleton single = new Singleton();
                }
                public static Singleton getInstance() {
                    return SingletonFactory.single;
                }
            }
            如果哪位高手有经典的单例代码欢迎指教@@

以上四种模式为创建模式,说白了就是用来创建对象的几种思想
五.外观模式
  我的理解:外观模式的核心思想是把各个相似功能作成各个模块,这样这些模块之间就不会相互影响相互依赖,
            从而达到了低耦合的效果,然后再通过一个核心类(外观类)把这些模块组织起来,
            外观类或许需要随时变换以达到实现不同功能的目的(当然我想也可以通过一些手段使它不必变换)。
            对于用户而言,只需固定的调用这个外观类即可(这个外观类表面上给用户的也只是一个固定的外观)
            看过一些对这个设计模式的介绍,说这是一个比较简单的设计模式。看上去好像确实不难,
            可我觉得对这些设计模式的理解可能不是很难,但最重要的是能否把这些设计模式的思想恰到好处地
            运用到我们的实际项目中去,这才是最关键的,也是最考验我们程序员功力的地方。努力吧!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值