软件的可维护性和可复用性是面向对象的设计要解决的核心问题。
“开闭原则”讲的是一个软件实体对扩展开放,对修改关闭。
接口使可插入性变得可能,在一个类等级结构的任何一个类可以实现一个接口,这个接口影响到此类的所有子类,但不会影响到此类的所有超类。
抽象类一定是用来继承的,具体类不是用来继承的。
创建模式围绕创建者和被创建者是否可以抽象,已经创建的个数,家族产品,产生了许多不同的创建模式。单例,多例,抽象工厂,建造模式等等。
对象适配器模式可以把多种不同的源适配到同一个目标,而类适配器模式很难把源类和子类都适配到目标类。
缺省适配器模式其实就是一个类适配器模式,这个缺省的适配器最好是抽象类,不能实例化,因为提供的方法都是缺省的实现,一般是没有意义的,具体的实现类才是真正的适配器类,实现自己需要的接口方法,这时候缺省适配器变成了源。
合成模式比较适合对象的树型结构的管理,根据component定义的结构方法是否全分为透明式和安全式,透明的接口定义所有的方法,但是运行期可能报错,安全式,只有composite实现管理对象的方法,component定义对象本身的功能方法。
装饰模式是继承关系的替代方案,和合成模式形式上差不多,实际上不一样,在合成模式的composite上继续继承子类修饰构件(component),适配器模式关注的仅仅是接口的适配,装饰模式关注对象的性能,会给对象的方法附加一些功能。
代理模式,是给对象提供一个代理对象,控制原对象的引用,原对象和代理对象实现同一个接口定义,实现上有点类似对象适配器模式,只是要加强对原对象的控制和原对象和代理对象要实现同一个接口。
享元模式分单和复合享元,享元的对象要分不变状态和可变状态,可变状态通过具体享元对象通过参数事例,这个模式里关键的是享元工厂,通过这个工厂创建具体的享元对象和是否共享享元对象,享元工厂一般是单例的模式实现。
封装变化,实际上是达到“开-闭”原则的途径,与组合/聚合复用原则相辅相成;闭或封装了抽象的商业逻辑,实现是“开”的,允许具体实现的多态性。
一个好的设计通常没有多于两层的继承等级结构,如果出现两个以上的变化因数,找出那个是静态的可以使用继承关系,那个是动态的必须使用聚合关系。
抽象化,实现化,脱耦是理解桥梁模式的关键,通过聚合关系实现桥梁的作用。
享元模式的对象可以是不变模式的对象,但并不要求享元模式一定是不变对象。不变模式分弱不变和强不变模式两种,“不变”和“只读”是很大的不同,不变是不可以修改,只读表示变量本身不可修改,但是可以在其它变量发生变化时发生变化。String类就是一个不变模式的实现体现。
策略模式实现算法职责(环境)和算法本身的分离。策略模式在每一个时刻只能使用一个策略对象。一个应用对应有时对应几个策略对象,应用程序可以在几个策略对象之间调换。策略在应用程序启动的时候就已经创立。
模板模式:涉及具体方法(模板方法),抽象方法(子类实现),钩子方法;servelet的实现方式就包括模板模式和观察者模式,如实现一个servelet和监听器(severlet、session)。
观察者模式主要要理解主题角色和观察者角色的概念,一类主题让一个或多个观察者检视,主题类管理观察者对象(增、删、通知),观察者类实现update方法(注意方法的标准命名,类似模板方法的do开头命名);观察者模式在MVC里的视图相当于观察者类。
迭代子模式关键聚集类要有创建迭代子类的方法,通过this把对象引用放到迭代子类里,同时聚集类要提供访问里具体元素的访问方法。
责任链模式:可以理解为一个链表把一些对象连接起来,每个对象都有关联的下一个对象,一个请求给一个对象后,有由这个对象决定自己处理还是让下面的对象处理。
命令模式把发出命令的职责和执行命令的职责分开。
备忘录模式又叫快照模式、token模式,有发起者、负责人、备忘录角色、备忘录对象记录的是对象内部对象的临时状态。也可以存储多个备忘录对象。
状态模式的状态对象根据上下文的状态决定对应的状态实现类对象。
分享到:
相关推荐
Spring经典语录涵盖了这个框架的关键概念和技术,旨在帮助开发者深入理解并有效应用Spring进行企业级应用开发。 1. **依赖注入(Dependency Injection, DI)**: Spring的核心特性之一,DI允许对象在运行时动态获取...
"Android经典源码全集"这个资源包,集合了多个经典的Android工程源码,旨在为开发者提供学习和借鉴的素材。下面,我们将深入探讨这些源码中蕴含的重要知识点。 1. **Android架构**:源码中的项目可能涵盖Android...
在微服务架构中,每个服务都是独立的,Eureka作为一个服务中心,可以让其他服务注册自身并查找已经注册的服务。服务提供者在启动时向Eureka服务器注册,服务消费者则通过Eureka获取服务提供者的地址,实现服务间的...
5. **组织架构**:管理者的作用是将员工这些“珍珠”串联起来,形成协同工作的整体,而非陷入日常琐事中。 6. **竞争与合作**:向竞争对手学习,甚至与之建立友好的关系,可以促进自身的进步和发展。 7. **创新...
不过,文档中的部分内容似乎与主题不太相关,例如泰戈尔的励志经典语录,这些内容可能是文档排版或编辑时的误入,与食堂食品安全工作校长负责制的主题没有直接关联。在讨论食品安全制度时,可忽略这部分内容。
维基媒体采用了一套基于LAMP(Linux、Apache、MySQL、PHP)的经典技术栈来构建其核心架构。这一架构不仅支持用户的基本访问需求,还集成了分布式对象缓存(Memcached)、外部存储、搜索服务(Lucene)、图像服务器...
首先,GameQuotes应用可能是一个展示游戏名言的应用,它可能允许用户浏览、搜索和分享来自各种游戏的经典语录。在源码中,我们预期会看到与数据获取、用户界面(UI)设计和交互相关的代码。 1. **Swift编程语言**: ...
1. **话术库**:包含了各种情境下的聊天技巧和经典语录,用户可以通过搜索或分类浏览找到适合的回复。 2. **情景模拟**:模拟不同场景的对话,帮助用户在实际交流中更好地运用话术。 3. **个性化推荐**:根据用户的...
这个压缩包包含了一个完整的 PHP 程序,用户可以通过这个程序获取并展示各类名人的经典语录。 【描述】"名人名言大全 PHP 版"是用于网站开发的源代码,它利用 PHP 的灵活性和高效性,实现了对名人名言数据的存储、...
其中一些经典语录包括: 1. “We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.” — 提醒开发者不要过早地进行优化,而应该首先关注程序...
Lorquotes.ru致力于收集、整理和分享这些来自电影、音乐、电视等领域的经典语录,为用户提供一个探索和学习的平台。而lorquotes2则是一个用Ruby语言编写的全新引擎,旨在提升网站的运行效率,提供更丰富的功能,并...
例如,教师可以引用《师说》、《礼记》和《孟子》中的经典语录,促使学生的思维发生变化,形成独立评判意识和创造性思维。这些名言警句不仅能够丰富学生的文化内涵,也能够激发学生的深度思考。 在教学探究的过程中...