templateMethod(模板方法模式)

MakeCar.java


package edu.hhxy;
/*
* 组装车
*/
public abstract class MakeCar {
//组装车头
public abstract void makeHead();

//组装车身
public abstract void makeBody();

//组装车尾
public abstract void makeTail();

public void make() {
this.makeHead();
this.makeBody();
this.makeTail();
}
}

MakeBus.java


package edu.hhxy;

public class MakeBus extends MakeCar {

public void makeBody() {
System.out.println("bus:组装车身");
}

public void makeHead() {
System.out.println("bus:组装车头");
}

public void makeTail() {
System.out.println("bus:组装车尾");
}
}

MakeJeep.java


package edu.hhxy;

public class MakeJeep extends MakeCar {

public void makeBody() {
System.out.println("jeep:组装车身");
}

public void makeHead() {
System.out.println("jeep:组装车头");
}

public void makeTail() {
System.out.println("jeep:组装车尾");
}

}

MakeKa.java


package edu.hhxy;

public class MakeKa extends MakeCar {

public void makeBody() {
System.out.println("ka:组装车身");
}

public void makeHead() {
System.out.println("ka:组装车头");
}

public void makeTail() {
System.out.println("ka:组装车尾");
}

}

MainClass.java


package edu.hhxy;

public class MainClass {
public static void main(String[] args) {
MakeCar bus = new MakeBus();
// bus.makeHead();
// bus.makeBody();
// bus.makeTail();
bus.make();

System.out.println("-------------------");

MakeCar jeep = new MakeJeep();
// jeep.makeHead();
// jeep.makeBody();
// jeep.makeTail();
jeep.make();

System.out.println("-------------------");

MakeCar ka = new MakeKa();
ka.make();
}
}

以下采用Spring配置方式

applicationContext.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="makeBus" class="edu.hhxy.MakeBus" />
<bean id="makeJeep" class="edu.hhxy.MakeJeep" />
<bean id="makeKa" class="edu.hhxy.MakeKa" />
</beans>

采用junit进行测试(MakeCarClassTest)(通过接口接收getBean,接收的bean可以是接口的实现类,需要哪个实现类,就get哪个实现类,低耦合)


package edu.hhxy;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MakeCarClassTest {
@Test
public void getCar() {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
MakeCar makeCar = (MakeCar) ctx.getBean("makeBus");
System.out.println(makeCar);
}
}

templateMethod(模板方法模式),布布扣,bubuko.com

时间: 2024-10-12 15:24:40

templateMethod(模板方法模式)的相关文章

&quot;围观&quot;设计模式(18)--行为型之模板方法模式(TemplateMethod Pattern)

模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式.让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤.----WIKIPEDIA 个人理解 模板方法模式相对而言比较简单,一般的都是由抽象类定义好模板方法,然后,子类通过继承并实现其父类中定义好的模板中需要执行的具体的方法,调用子类对象的模板方法时,会执行该类中的具体实现的方法.这个模式我个人的感觉有点像是面向过程的操作,执行完一道工序,接着下一道工序. 案例解析 模板方法相对来说比较简单,这里只列举一个例子供大

设计模式之模板方法模式(Template Method)摘录

23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象.创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些具体的类的信息封装起来.第二,它们隐藏了这些类的实例是如何被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以

设计模式—模板方法模式

模板方法模式的英文:Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method let subclasses redefine certain steps of an algorithm without changing the algorithm`s structure. 意思是:定义一个操作中的算法的框架,而将一些步骤延迟到子类中去.使得子类不

java设计模式(9):模板方法模式(TemplateMethod)

一,定义:模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 二,类图: 三,通过小例子讲解: 这个模式一般用在程序的步骤比较多,而且有固定的模式,固定的步骤,而每一步的实现又有多种情况,这是我们可以使用TemplateMethod模式.这样可以保证算法骨架的正确性,又将多态运用的非常好. 这里举个人一天要做的事情吧,假如一个人一天要有起床,吃饭,做事情,睡觉四个事项. 1,首先我们看模板类: [java] 

设计模式入门之模板方法模式TemplateMethod

模板方法模式定义: 定义一个算法的骨架,而将步骤延迟到子类中.这种模式可以使得在不改变算法骨架(模板)的情况下修改每个步骤的具体实现 从功能上来看,这个模式跟生成器模式有些相像,只不过生成器模式定义了创建对象的过程,而模板方法模式定义了算法过程 感觉这个模式要简单很多. 钩子:可以被子类覆盖以实现扩展的方法通常叫做钩子 实例:用户登录过程,分为后台人员登录和用户登录,这是一个非常成型的技术过程,是非常典型的模板方法模式的应用,其中普通用户密码不需要加密,而工作人员的密码需要进行加密比对.上代码

设计模式学习之模板方法模式(TemplateMethod,行为型模式)(9)

一.什么是模板方法模式 Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为. 二.模板方法模式的应用场景 Template Method模式一般应用在具有以下条件的应用中: - 具有统一的操作步骤或操作过程 - 具有不同的操作细节 - 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同 private static void Main(string[] arg

模板方法模式-TemplateMethod

模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的机构即可以重定义算法的某些特定步骤. 模板方法模式是通过吧不变形为搬移到超类,去除子类中的重复代码来体现它的优势.当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现.通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠. 模板方法模式结构图: 代码实现: 模板方法模式的实现要素:准备一个抽象类,将部分逻辑以具体方法的形式实现,然后

模板方法模式( TemplateMethod)

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤. AbstractClass 是抽象类,其实也是一个抽象模板,定义并实现了一个模板方法,这个模板方法一般是具体方法,它给出了一个顶极端逻辑骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类中实现. ConcreteClass ,实现父类定义的一个或多个抽象方法,每一个AbstractClass 都可以有任意多个 ConcreteClass 与之对应,每一个 Concr

设计模式之模板方法模式(TemplateMethod)

模板方法模式使用继承来实现模式的功能,在基类使用一个方法来定义算法的各个步骤,这些步骤(方法)的具体实现会放到子类中,通过这样来实现不同算法对象的算法拼合,完成该对象整体算法的实现. 作用 模板方法中定义了具体操作中所使用算法的各个步骤,并将其实现交由子类完成,从而实现多种不同的功能: 类视图 实现 class Lunch { public: Lunch(){} virtual ~Lunch(){} void feed() { cooking(); eating(); cleaning(); }