设计模式的一些总结与思考

前言:尽管市面上有各种各样的设计模式的书籍和教程,比如C#设计模式、java设计模式、python设计模式、js设计模式,但其实大家的思想都是一样的,就像武林高手比拼的,永远是内功,因为已经过了那个还在关注招式的层面。
        我在看那些教程的时候注意到了一个有意思的现象。大家都说的是GOF的那23种经典设计模式,但是说到具体是哪23种,就会产生一点小小的分歧,比如简单工厂模式,有些人认为它属于GOF23种的一种,有些人认为不属于。但不可否认的是,简单工厂绝对是一种设计模式。设计模式可以有成百上千种,但经典的就是GOF的那23种。其实我们大可不必纠结它到底属不属于23种里的一种,只要能解决我们的问题就行。
设计模式有三种类型,我们用123来表示一下:
1  创建型
2  结构型
3  行为型
以下是我对设计模式的一些思考:
1.1、单例模式
       单例模式就是只允许产生一个对象,不管是多少个线程访问这个资源,都是访问这一个对象。C#和java在单例模式在双重判断的写法上稍微有些不同。C#的锁是用的lock关键字,java用的是synchronized关键字。但是有一点需要注意的是,java的单例模式,偶尔会遇到因为指令重排导致的单例模式失败的情况,但是C#从来没遇到过。对于这种现象可以用volatile禁用指令重排,或者采用饿汉式的单例模式。即程序一进来就产生静态对象,比较着急,所以叫饿汉式。这种方式不会没有线程安全问题,无论是C#还是java。
1.2、简单工厂
        将创建产品的过程都封装到了一个工厂类中,如果创建的产品需要变化,就得更改这个工厂类,因为设计的比较简单,所以叫简单工厂,哈哈。其实当你明白什么是简单工厂以后,你就会惊讶这就是简单工厂?这不是我们天天都在用的么?是的,简单工厂使用的很频繁,只不过你不知道那是简单工厂而已。
1.3、工厂方法
        工厂方法是将所有工厂抽象出来一个父类,所有产品也抽象出来一个父类,在工厂的子类中返回new出来的产品子类,将产品和工厂进行了解耦。后面如果是实现新的产品,只需要有新的工厂和新的产品分别继承他们的父类就完事了。这个设计模式的可拓展性非常好,非常符合设计模式中的“对拓展开放、对修改封闭”原则,即开闭原则。
1.4、抽象工厂
持续更新中。。。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AIGIS.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值