2006-12-7 星期四

本文介绍了设计模式中的构建型模式——单例模式,并概述了多种结构性设计模式,包括适配器模式、桥接模式、组合模式等,旨在帮助读者理解这些模式的应用场景与核心概念。

设计模式,构建型模式最后一个:Singleton单件模式

保证一个类只有一个实例存在,方法是隐藏构造方法,在类的内部构造一个静态的实例,然后建一个静态方法返回这个实例,其中一个知识点是,静态变量是在main方法执行前初始化的,也就是在程序运行前初始化的。

结构性模式:适配器模式Adapter,桥接模式Bridge,组合模式Composite,装饰模式Dectorator,外观模式Fa ade,享元模式FlyWeight,代理模式Proxy

Adapter模式,是多重继承的一种替代方法,通过继承一个类,组合一个类,来实现。

Bridge模式,将要执行的业务方法抽象出来,建立一个桥接接口,通过实现该接口用于不同的业务,然后使用该实现类。

Composite模式,多个相同的对象要调用它们的一个方法,单独写一个类,里面有个该对象的类的类型的集合,里面装有许多对象,有个方法,利用循环依次调用每个对象的方法,宗旨是让类的使用者更方便。

Dectorator模式,避免过深继承的一种方式,目前有一个类,但业务需求改变导致这个类有少许变化,如果继承这个类,将导致无限制继承,办法是建立一个这个类的兄弟,实现新的业务需求,然后调用兄弟的方法。

Fa ade模式,用于业务操作十分复杂,为了实现对复杂性的封装,建立一个类,建立一个面向外界的接口,类的使用者只需调用该接口就搞定了,而背后复杂的逻辑不必去关心。

FlyWeight模式,跟单件模式有类似之处,都是为了减少重复对象的创建,这个模式是,建立一个缓存,将已建立的对象放入缓存,当再次需要的时候在缓存中查找是不是已经存在了该对象,如果存在,直接返回,否则创建,这样节省了内存空间,这样的适用于有许多的小型对象的适用。

Proxy模式,用于不同用户有不同操作权限的类似情况,有一个类负责业务逻辑的执行并不负责用户是否具有权限的判断,这件任务由另一个类负责。

以上设计模式的理解,用自己的话写了一下,希望加深理解。

明天可能要给大家讲第三章,得好好准备准备,争取完美,嘻嘻。

针对用户提出的关于组织星期信息以及pta 7-36-1题目的求解或者指导,以下是提供的帮助。 对于编程题目解答和学习指南来说,重要的是理解题目要求,选择合适的算法或数据结构来解决问题,并确保代码逻辑正确无误。假设PTA (Programming Teaching Assistant)平台上的7-36-1题目涉及到了有关星期的信息处理,那么可以参考如下建议: 了解题目背景及具体要求 仔细阅读给定的任务说明,确定输入输出格式、边界条件以及其他任何可能影响解决方案的因素。 设计合理的函数或程序流程以实现目标功能 例如,若需计算某日期对应周几,则可采用蔡勒公式(Zeller's Congruence),这是一种用于计算公历中任一日属于星期内哪一天的算法。 $$w = \left( d + \lfloor\frac{13(m+1)}{5}\rfloor + y + \lfloor\frac{y}{4}\rfloor - \lfloor\frac{y}{100}\rfloor + \lfloor\frac{y}{400}\rfloor + 5 \right)\mod 7$$ 其中, - w 是星期数(0=Saturday, 1=Sunday,..., 6=Friday) - d 是月份中的日子 - m 是月份数(3=March, ..., 12=December;January 和 February 分别看作上一年度的第十三个月和第十四个月) - y 是年份 编写并调试代码 根据所选的方法,在选定的语言环境中编码实践。这里给出Python版本的例子: ```python def get_weekday(year, month, day): if month < 3: month += 12 year -= 1 q = day m = month K = year % 100 J = year // 100 f = q + ((13 * (m + 1)) // 5) + K + (K // 4) + (J // 4) - (2 * J) return f % 7 # 返回值范围为[0,6]表示从周六到周五 # 示例调用 print(get_weekday(2024, 12, 29)) ``` 测试结果准确性 验证不同情况下的输出是否符合预期,包括但不限于闰年的考虑等因素。 优化性能与改进易读性 检查是否有简化表达式的机会,增加注释提高他人理解程度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值