Java工厂模式

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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值