设计模式学习笔记

简单工厂 - 传字符串,运算工厂类中switch判断,如果增加运算符类,就要修改工厂类,增加期中的case分支。对扩展开放了,对修改也开放了;违背了 开放-封闭原则。

工厂方法 - 每种运算符对象,都对应一个工厂

反射+抽象工厂: 所有在用简单工厂的地方,都可以考虑用反射技术来去除switch或if,解除分支判断带来的耦合。

策略 - 传对象(共同实现了一个接口的不同对象),直接调用对象的方法(接口中的方法)


Flyweight: 设计模式 中的享元模式,避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类). 享元 =共享元类


所谓元类,在 Python(以及其它语言)中,类本身就是可以被传递和自省的对象。
既然可以用类作为模板来生成对象,那么用什么作为模板来生成类呢?答案是元类(metaclass)。


单例Singleton:

if (instance == null)
{
    lock(syncRoot)
    {
        if (instance == null)
        {
            instance = new Singleton();
        }
    }
}
当instance为null并且同时有两个线程调用GetInstance()方法时,它们将都可以通过第一重instance==null的判断。然后由于lock机制,这两个线程则只有一个进入,另一个在外排除等候,必须要其中的一个进入并出来后,另一个才有进入。而此时如果没有了第二重的instance是否为null的判断,则第一个线程创建了实例,而第二个线程还是可以继续再创建新的实例的,这就没有达到单例的目的。


Decorator装饰模式: 具体装饰类 -》继承装饰抽象类 -》继承要装饰的对象的抽象类。 三层次继承

UML类图:统一建模语言(UML:Unified Modeling Language)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值