大话设计模式学习1

本文深入探讨了设计模式中的简单工厂模式、策略模式以及相关的设计原则,如单一职责原则、开放-封闭原则和依赖倒转原则。通过实例分析,解释了这些模式如何降低代码耦合度,提高系统的扩展性和灵活性。同时,介绍了装饰模式和代理模式的应用,展示它们在功能增强和访问控制方面的价值。

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

大话设计模式学习

简单工厂模式

目的:为了减少代码耦合度,将对象创建和使用进行分离。

优点: 将对象的创建交给专门的工厂类负责,实现了对象的创建和对象的使用分离,降低代码耦合度。

缺点: 工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,比如都看过X战警吧,里面的魔形女是绿皮肤,上面的工厂类显然满足不了,需要增加一个 if 判断分支才能支持。而且当产品类型较多时,简单工厂的 if 判断将会非常多,不容易维护.

策略模式

目的:针对简单工厂模式的增加新具体产品就需要修改工厂类的缺点,提出策略模式。

优点:其思想就是创建一个抽象的功能父类,以后增加别的功能,只用增加对应具体功能的类,然后用反射去调用新加载的类不用在修改工厂类。

单一职责原则

目的:提高代码的复用性,减少代码之间的耦合度。使一个类只要一个引起它变化的原因。

开放-封闭原则

目的:当软件的功能需求发生变化时,代码应该具有稳定性,不能推导重写,即软件应该具有扩展性,但是不能修改。

实现主要过程:对一些可能会发生变化的功能就要写抽象父类,后期容易拓展新的功能。

依赖倒转原则

目的:使代码之间应该具有高内聚,低耦合的特点,高层模块不应该依赖底层模块,应该都依赖抽象模块。抽象模块不应该依赖细节,应该是细节依赖抽象模块(不要写成针对具体的细节,比如加减乘除,应该写成抽象的父类接口,提高代码复用性,满足里氏代换原则(子类必须能够替换他们的父类新))。

装饰模式

目的:动态的地给一个对象添加一些额外的职能,就增加功能来说,装饰模式比生成子类更为灵活。
在这里插入图片描述

把类中的装饰功能从类中搬移去除,简化原有的类。其思想就是Decorator装饰者抽象类继承Component抽象类。定义Component抽象类的实体对象ConcreteComponent,定义抽象类Decorator的实体对象DecoratorA,DecoratorB。ConcreteComponent,DecoratorA,DecoratorB都是Component的实现类或者子类实现类,用DecoratorA装饰ConcreteComponent,然后用DecoratorB装饰DecoratorA。以达到对ConcreteComponent层层装饰的目的。

代理模式

目的:为其他对象提供一种代理以控制对这个对象的访问。

在这里插入图片描述

应用:

远程代理:为一个对象在不同地址空间提供局部代表,

虚拟代理:根据需要创建开销很大的对象,通过它存放实例化需要很长时间的对象。比如网页中图片的加载,先是代理对象替代真实图片,然后图片进行下载。

安全代理:用来控制真实对象访问时权限,应用于对象应该有不同访问权限的时候

后图片进行下载。

安全代理:用来控制真实对象访问时权限,应用于对象应该有不同访问权限的时候

智能指引,调用真实的对象时,代理处理另一些事。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值