java实现简单工厂模式,工厂模式
程序员文章站
2022-07-14 21:32:42
...
一个农场公司专门负责培育各种水果,在这个系统中的水果有葡萄,草莓和苹果,其类图如图所示。 请按以下要求编写程序:
1. 应用简单工厂方法模式,在主程序中根据键盘输入的水果名称来完成其生长状态的描述。
2 应用工厂方法模式,在主程序中根据键盘输入的水果名称来完成其生长状态的描述
//新建一个简单工厂类 SimpleFactory.java
public class SimpleFactory{
// 此处需要定义 static 类型,在客户端 类名。方法调用
public staitc Fruit getFruitObj(String type){
Fruit obj = null;
if(type.equals("apple")){
obj = (Fruit) new Apple();
}else if(type.equals("straw")){
obj= (Fruit) new Straw();
}else if(type.equals("grape")){
obj = (Fruit) new Grape();
}
return obj;
}
}
//实现水果类 Fruit.java
interface Fruit{
void plant(); //定义种植方法
void grow(); //定义生长方法
void harvest();
}
// 实现苹果类 Apple.java
//此处草莓和葡萄同理,都实现接口FRUIT
public class Apple implements Fruit{
@Override
public void plant() {
// TODO Auto-generated method stub
System.out.print("种植了苹果");
}
@Override
public void grow() {
// TODO Auto-generated method stub
System.out.print("苹果生长了");
}
@Override
public void harvest() {
// TODO Auto-generated method stub
System.out.print("苹果结果了");
}
}
//客户端接口
public class main{
public staic void main(String args[]){
Fruit fu =SimpleFactory.getfruitobj("apple");
fu.plant();
fu.grow();
fu.harvest();
}
}
工厂模式实现
/实现水果类 Fruit.java
interface Fruit{
void plant(); //定义种植方法
void grow(); //定义生长方法
void harvest();
}
// 定义一个抽象工厂方法
public abstract class Factory {
public abstract Fruit getapple();
public static Factory getFruitFactory(Stri ng type){
Factory f = null;
if(type.equals("apple")){
f=new AppleFactory();
f.getapple();
}
return f;
}
//定义一个苹果的工厂
public class AppleFactory extends Factory{
public Apple getapple(){
//返回苹果的对象
return new Apple();
}
//定义一个苹果。与上面简单工厂同
public class Apple implements Fruit{
@Override
public void plant() {
// TODO Auto-generated method stub
System.out.print("123");
}
@Override
public void grow() {
// TODO Auto-generated method stub
}
@Override
public void harvest() {
// TODO Auto-generated method stub
}
}
//定义主函数
public class client {
public static void main(String[] args) {
// TODO Auto-generated method stub
//执行 方法
Fruit f =(Fruit) Factory.getFruitFactory("apple");
f.plant();
f.grow();
f.harvest();
}
转载于:https://my.oschina.net/kakoi/blog/519294