场景描述:假设现在有一个User类(如下),原本设计程序使用SqlServer访问,现在因为客户需求的变化,需要使用Access来访问。publicclass User{privateint id;privatestring name;publicint ID{ get { return id; }set { id = value; }}publicstring Name{get { return name; }set { name = value; }}}对于这种场景,单纯的去修改访问数据库代码,把SqlServer的访问类,修改成Access的访问类,不仅会出现很多问题,因为两种数据库...
FactoryMethod是一种创建性模式,它定义了一个创建对象的接口,但是却让子类来决定具体实例化哪一个类.当一个类无法预料要创建哪种类的对象或是一个类需要由子类来指定创建的对象时我们就需要用到Factory Method 模式了interface Eat{ public void eat();}class ChineseMan implements Eat{ public void eat(){ System.out.println("chineseman eat rice and flour"); }}class UsaMan implements Eat{ public void eat(){ System.o...
在工厂方法中会涉及以下4中角色:
抽象工厂角色:任何在创建对象的工厂类必须实现该接口.
具体工厂角色:该角色实现了抽象工厂接口,含有与应用相关的逻辑,应用程序调用的话就能创建相应的产品对象。
抽象产品角色:该角色定义了产品的共性,实现对产品最抽象的定义。
具体产品角色:该角色实现了抽象产品角色的接口。
用UML图表示他们的关系:
1.抽象工厂:package com;publicinterface FruitFactory {public Fruit getFruit();
}
...
如果项目中的一个页面跳转功能存在10个以上的if else判断,想要做一下整改一、什么是策略模式策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重If判断问题。1.环境(Context)角色:持有一个Strategy的引用。2.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。3.具体策略(ConcreteStrategy)角色:包...
定义: Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses. (定义一个用于创建对象的接口, 让子类决定实例化哪一个类. 工厂方法使一个类的实例化延迟到其子类.)类图:UML 类图分析: Product 接口定义产品的共性, 具体的产品应该实现该接口; Creator 接口声明了产品生成接口, 具体的产品工厂应该实现该接口.工厂方法...
模板方法定义:定义一个过程中的算法骨架,而将算法的一些步骤延迟到子类中。这么做是为了将不变的部分封装到父类中实现,而将可变部分的算法由子类继承实现,便于扩展。模板结构:抽象模板
模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。基本方法:
抽象方法:在抽象类中声明,由具体子类实现。具体方法:在抽象类中已经实现,在具体子类中可以继承或重写它。钩子方法:在抽象类中已经实现,包括用于判断的逻辑方...
动机 (Motivation)在软件系统中,经常面临着“某个对象”的创建工作; 由于需求的变化,这个对象经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?如何提供一种“封装机制”来隔离出“这个易变对象”的变化,从而保持系统中“其他依赖该对象的对象”不随着需求改变而改变 ? 意图 (Intent)定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使得一个类的实例化延迟到子类。 ———《...
摘要:Template Method模式是比较简单的设计模式之一,但它却是代码复用的一项基本的技术,在类库中尤其重要。 主要内容1.概述2.Template Method解说3..NET中的Template Method模式4.适用性及实现要点 概述变化一直以来都是软件设计的永恒话题,在XP编程中提倡拥抱变化,积极应对。如何更好的去抓住变化点,应对变化?如何更好的提高代码复用?通过学习Template Method模式,您应该有一个新的认识。意图定义一个操作中的算法的...
1、工厂方法模式的引进前面一章刚说过简单工厂模式,我们知道,简单工厂模式无论针对什么样的产品结构都采用以不变应万变的策略,就是只有一个工厂角色,所有的产品都通过这个万能工厂类来创建,这个工厂类中包含了所有产品的创建逻辑,但是当我们系统中要增加一种新的产品的时候,那么我们就需要修改工厂类了,需要在工厂类中增加新的产品创建逻辑,所以,这就不符合我们编写程序的"开-闭"原则。所以就有了我们今天要说的工厂方法...
模板方法模式
定义:模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法就是一个固定步骤的“算法”骨架方法。这个算法的可变部分通过继承,在子类中重载实现。这样就可以在算法骨架不变的情况下,算法细节步骤根据不同的需求进行适应的改变,类图如下:优点:● 模板方法模式在定义了一组算法,将具体的实现交由子类负责...
课程视频单例模式 建造者VS工厂方法 课程笔记课程笔记课程代码课程代码新课程火热报名中课程介绍原文:http://blog.csdn.net/jaynol/article/details/38221955
前言:【模式总览】——————————by xingoo 模式意图 定义一个类的框架,当它有不同的类时,再具体实现。 比如,我们设计一个跨系统的客户端软件,Windows需要一套展现类,Linux需要一套,mac还需要一套。这样,只需要抽取他们的共同操作编程一个框架类,具体使用到哪个系统时,再使用对应的类,有点像C++里面的模板。 应用场景 1 一次性实现一个类的不变部分,其他的部分留到子类实现。 2 各个子类提取公...
设计模式--模板方法模式1 概述1.1 定义
模板方法模式(Template Method Design)定义一个操作的算法的框架,而将一些步骤延迟到子类中。使得子类可以在不改变算法结构的情况下,重新定义算法的某些特定步骤。1.2 应用
JDK中InputStream中的read(byte b[], int off, int len)方法就依赖于read()方法,而read()方法就是InputStream子类实现。
还有许多类似的模板方法模式。之前自己学了1个月左右的Android,在学了过程中就发现Android中...
定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。角色: 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。 代码示例:抽象类定义了整个从做饭到吃饭最后清理的流程,子类是具体的不同的方式。 抽象类:定义骨架package com.template;publicab...
模板方法模式定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 抽象类的父类,父类中定义了基本方法,模板方法和钩子方法。基本方法:父类中定义,在子类中实现。模板方法:父类中实现,调用基本方法,子类继承。钩子方法:在父类中定义,变相的实现父类调用子类的方法。 具体例子如下:父类: 1package pattern.templateMethod;2 3publicabstract...