Java工厂模式

来源:互联网 发布:带着淘宝混异界 叶忆落 编辑:程序博客网 时间:2024/06/05 01:04

================================================简单工厂模式================================================================

package com.cnse.test;


/**
 * @author Administrator 简单工厂
 * 所有实现类 需要实现的接口
 */
public interface Singer {
//接口的方法
public void say();
}

=================================================

package com.cnse.test;


public class StudentSender implements Singer{


@Override
public void say() {
System.out.println("我是学生我实现了,接口,我重写了,singer的方法......");
}


}

===========================================

package com.cnse.test;


public class TeacherSinger implements Singer{


@Override
public void say() {
System.out.println("我是老师我重写实现了 singer接口,我重写了方法......");
}


}

======================

package com.cnse.test;


/**
 * @author Administrator
 *简单工厂
 *1.定义一个公共的接口 和方法
 *2.让类去实现这个接口重写方法
 *3.定义工厂类 ,定义接口实例的方法 判断传入的参数属哪个类 返回 这个类的对象
 *静态工厂
 *1.定义一个公共的接口 和方法
 *2.让类去实现这个接口重写方法
 *3.定义工厂类,定义接口实例的方法 直接返回这个对象
 *抽象工厂
 *1.定义一个公共的接口 和方法
 *2.让类去实现这个接口重写方法
 *3.
 */
public class Factory {
// 简单工厂
public Singer product(String type) {
if (type.equals("student")) {
return new StudentSender();
}
if (type.equals("teacher")) {
return new TeacherSinger();
}
return null;
}

}

===============================================静态工厂模式=================================================================

public class Factory {
// 静态工厂
public static Singer ProduceStudentSinger() {
return new StudentSender();
}


public static Singer produceTeacherSinger() {
return new TeacherSinger();


}
}

================================================抽象工厂模式===============================================================

package com.cnse.test;


public interface Provide {
public Singer produce();
}

===============

package com.cnse.test;




public class StudentFactory implements Provide{


@Override
public Singer produce() {
System.out.println("我是学生的工厂 我实现了调度接口.provide,,返回学生singer的代理对象....");
return new StudentSender();
}


}

================

package com.cnse.test;


public class TeacherFactory implements Provide{


@Override
public Singer produce() {
System.out.println("我是老师工厂我实现了调度接口provide,我要返回一个老师singer对象");
return new TeacherSinger();
}


}

==========

package com.cnse.test;


public class Test {
public static void main(String[] args) {
/**
* 简单工厂测试
*/
// get student instance
Factory f = new Factory();
Singer student_general = f.product("student");
System.out.println(student_general);
/**
* 静态工厂测试
*/
// get a student instance
Singer static_student = f.ProduceStudentSinger();
System.out.println(static_student);
/**
* 抽象工厂测试
*/
Provide p = new StudentFactory();
Singer si = p.produce();
System.out.println(si);
}
}

========================================================================================================================


0 0
原创粉丝点击