设计模式
蛇皮皮蛋
求大佬笔下留情……
展开
-
设计模式(二)(装饰者模式、工厂方法模式、抽象工厂模式)
三:装饰者模式 装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。 主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。 何时使用:在不想增加很多子类的情况下扩展类。 如何解决:将具体功能职...原创 2018-10-19 17:41:29 · 4224 阅读 · 0 评论 -
设计模式(一)(策略模式、观察者模式)
一:策略模式 策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。 何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。 如何解决:将这些算法封装成一个一个的类,任意地替...原创 2018-10-17 15:55:17 · 4824 阅读 · 1 评论 -
设计模式(五)(模板方法模式、迭代器模式、组合模式)
十:模板方法模式 模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。 模板方法模式在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 好莱坞原则:高层组件会决定什么时候调用低层组件,但是低层组件不能调用高层组件。 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改...原创 2018-10-26 13:46:54 · 4310 阅读 · 0 评论 -
设计模式(三)(单例模式、命令模式)
六:单例模式 单例模式确保一个类只有一个实例,并提供一个全局访问点。 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 主要解决:一个全局使用的类频繁地创建与销毁。 何时使用:当您想控制实例数目,节省系统资源的时候。 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 关键代码:构造函数是私有的。 应用实例: 1、一个党只能有一个主席。 2、Window...原创 2018-10-23 16:16:30 · 4317 阅读 · 0 评论 -
设计模式(六)(状态模式、代理模式)
十三:状态模式 状态模式允许对象在内部状态改变它的行为,对象看起来好像修改了它的类。 意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 何时使用:代码中包含大量与对象状态有关的条件语句。 如何解决:将各种具体的状态类抽象出来。 关键代码:通常命令模式的接口中只有一个方法...原创 2018-10-30 14:06:01 · 4313 阅读 · 0 评论 -
设计模式(四)(适配器模式、外观模式)
八:适配器模式 适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。 何时使用: 1、系统需要使用现有的类,而此类的...原创 2018-10-24 14:08:11 · 4145 阅读 · 0 评论