0%

基本情况

211本985硕,算半个科班,实习和项目都勉强算有,但都极其拿不出手。C++技术栈,八股文和算法题准备还算充分,由于相关书籍看的多,对于编程理解还算深刻。

阅读全文 »

一、动机

模板方法模式是一种行为设计模式,它在超类中定义了一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。

对于某一项任务,常常有稳定的整体操作结构,但是各个子步骤却有很多改变的需求如何确定稳定操作的前提下,来灵活应对各个子步骤的变化或者晚期实现的需求?

阅读全文 »

一、动机

某些情况下我们可能会”过度的使用继承来扩展对象的功能“,由于继承为类型引入的静态特质(编译时装饰),使得这种扩展缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致子类的膨胀。

如何使得”对象功能的扩展“能够根据需求来动态的实现?同时避免”扩展功能的增多“带来的子类膨胀问题?从而使得任何”功能扩展变化“所导致的影响降为最低。

装饰模式是一种结构型设计模式,允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码以及减少子类个数)。

阅读全文 »

一、动机

观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个 “观察” 该对象的其他对象。

在软件构建过程中,我们需要为某些对象建立一种”通知依赖关系“——一个对象(目标对象)的状态发生改变(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好的抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并能形成一定的依赖关系,从而实现软件体系结构的松耦合。

阅读全文 »

一、动机

在软件系统中,经常有这样一种特殊的类,必须保障它们在系统内中存在一个实例,才能确保它们的逻辑正确性,以及良好的效率。如何绕过常规的构建器,提供一个机制来保证一个类只有一个实例。比如Windows的任务管理器就是很典型的例子,你不能同时打开两个不同的任务管理器。

阅读全文 »

一、动机

在软件系统中,经常面临”一系列相互依赖的对象“的建构工作,同时,由于需求的变化,往往存在更多系列对象的创建工作。如何应对这种变化? 如何绕过常规的对象创建方法(new),提供一种”封装机制“来避免客户程序和这种”多系列具体对象创建工作“的紧耦合?

抽象工厂模式是一种创建型设计模式,它能创建一系列相关的对象,而无需指定其具体类。

阅读全文 »

一、动机

在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种”封装机制“来避免客户程序和这种”具体对象创建工作“的紧耦合?

阅读全文 »