================================================简单工厂模式================================================================
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);
}
}
========================================================================================================================