大话模式的总结


      下面这幅图是我自己总结的大话模式的中心思想。

 


里氏代换原则:

子类可以扩展父类的功能,但不能改变父类原有的功能

 

 

依赖倒置:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

 依赖倒置原则的核心思想是面向接口编程。

 

 迪米特法则:就是说的两人之间尽量保持陌生减少耦合。

 

设计模式共有23种。

但是我们进一步分析可以将这23个模式分成3大类。


1.创建型(这是从对象的创建方面来考虑的),但是真正上简单工厂不是GoF总结出来的模式,原因你懂的。


这其中的3个工厂模式迷惑了我一段时间,就是看UML图上得知他们三者之间应该是越来越抽象,但具体有什么区别还真是不知道。后来上网查了一些资料才慢慢李处头绪。首先工厂模式主要是提供了接口减少了与外界的联系。但是他们的区别究竟在哪里呢?


简单工厂,我就不多说什么了,但是工厂方法和抽象工厂模式我们还是有必要来区别一下的。例如现在有这样的一个场景,两个不同的工厂专门造锤子,另外两个个工厂专门造钉子。但是客户往往想在一个地方既买到锤子又买到钉子,这时候就出现了一个抽象工厂五金铺。所以我的理解就是如果是生产同类产品的模式那就是属于工厂方法。如果是出现了生产不同产品的模式那就属于抽象工厂。

 

 

当然这仅仅是个人之言,若是您有什么好的观点,欢迎您赐教。

 

 

2.结构型(这主要是从对象之间的组成和依赖关系来考虑的)。这一类中的外观模式:它主要是将细粒度的对象包装成组粒度的对象,应用程序通过访问这个外观对象,完成对细粒度对象的调用。我们用一组图来说明


这是没有使用外观模式之前的。


这一幅是使用了外观模式之后的。这样的好处就是用外观模式将变化的部分封装起来。将变化的部分和应用程序隔离,这无疑有利于提高软件的易维护性。

3.行为(看名字既可以看出它是从对象行为的角度来分析的)。


最后我附上下图是23种模式的分类图:


 

设计模式是一种解决软件设计问题的经验总结,它提供了一套可重用的设计思想和解决方案。在Python中,我们也可以应用设计模式来提高代码的可维护性、可扩展性和可复用性。下面是一些常见的设计模式在Python中的实现: 1. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。 ```python class Singleton: _instance = None def __new__(cls): if not cls._instance: cls._instance = super().__new__(cls) return cls._instance ``` 2. 工厂模式(Factory Pattern):通过一个工厂类来创建对象,而不是直接实例化对象。 ```python class Product: def __init__(self, name): self.name = name class ProductFactory: @staticmethod def create_product(name): return Product(name) ``` 3. 观察者模式(Observer Pattern):定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象。 ```python class Subject: def __init__(self): self.observers = [] def attach(self, observer): self.observers.append(observer) def detach(self, observer): self.observers.remove(observer) def notify(self): for observer in self.observers: observer.update() class Observer: def update(self): print("Received update from subject.") ``` 以上是三个常见的设计模式在Python中的简单示例,实际应用中可能会更加复杂。当然,根据具体的需求和场景,选择合适的设计模式是很重要的。希望这些示例对你有所帮助!如果你对其他设计模式感兴趣,可以继续提问。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值