求助一个开闭原则的JAVA小代码

1,有水果类,苹果类和梨子类实现了水果类这个接口2,水果类有种植,开花,结果3个方法3,园丁类是来NEW出每种水果的(对这个类不能修改)4,在测试类里面不能看到有NEW关... 1,有水果类,苹果类和梨子类实现了水果类这个接口
2,水果类有种植,开花,结果3个方法
3,园丁类是来NEW出每种水果的(对这个类不能修改)
4,在测试类里面不能看到有NEW关键字
1楼的 yanweimin7 会写就牛叉了?只会在这里说风凉话,你问我答,答对了给你分就是了,你刷分就刷,还啰七八嗦说什么,鄙视这种高傲的PIG!
2楼 lincoln1177 look 3.园丁类是来NEW出每种水果的(对这个类不能修改)
ks6466686 符合要求 继续
Apple tempApple;
Pear tempPear;
gardener sinGarden = gardener.getGardener();

tempApple=sinGarden.getFruit(tempPear);
这个APPLE你没有给它初始化,getFruit(tempPear)这里怎么用
展开
 我来答
lincoln1177
2008-11-12 · TA获得超过806个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:300万
展开全部
public class TestFruit {

public static void main(String[] args) {

Fruit fruit;
fruit = Gardener.NewFruit("apple");
fruit.grow();
fruit.Flowering();
fruit.Fruiting();

fruit = Gardener.NewFruit("pear");
fruit.grow();
fruit.Flowering();
fruit.Fruiting();

}
}

interface Fruit {
void grow();

void Flowering();

void Fruiting();
}

class Apple implements Fruit {

public void Flowering() {
System.out.println("开花的是苹果");
}

public void Fruiting() {
System.out.println("结果的是苹果");
}

public void grow() {
System.out.println("种植的是苹果");
}

}

class Pear implements Fruit {

public void Flowering() {
System.out.println("开花的是梨");
}

public void Fruiting() {
System.out.println("结果的是梨");
}

public void grow() {
System.out.println("种植的是梨");
}

}

final class Gardener {

public static Fruit NewFruit(String fruitname) {
if (fruitname.equals("apple")) {
return new Apple();
} else if (fruitname.equals("pear")) {
return new Pear();
}
return null;
}

}

不知这样写是否正确。个人认为这应该是一个工厂模式吧。
所有类的实现都由工厂类(也就是园丁类)完成。
写的只是一个简单工厂模式。

通过抽象类及接口,规定了具体类的特征作为抽象层,相对稳定,不需更改,从而满足“对修改关闭”;而从抽象类导出的具体类可以改变系统的行为,从而满足“对扩展开放”。开闭原则在问题描述时就已经实现了。当然这只是对于客户端(也就是测试类)来说,测试类只需要提供要创建对象的描述,系统自动创建相应的对象。而对于工厂类并没有满足开闭原则。
ks6466686
2008-11-12 · TA获得超过169个赞
知道答主
回答量:128
采纳率:0%
帮助的人:0
展开全部
3,园丁类是来NEW出每种水果的(对这个类不能修改)

楼上的 这一条 没有 满足,如果 增加 一个水果,肯定就不符合 开闭原则了...虽然我也是刚刚才查了下什么是OCP

写了一会了,思绪有点乱, 解决不了 static的问题,我发上来把,一会 我下班 回去 寝室 再给你编,你先看看那 给我个建议吧..

写完了,你看看吧 还有,给你推荐个网址,看看这个,你可以学到很多!~
http://www.cnblogs.com/zzj-46000452/archive/2006/09/16/506286.html
import java.lang.*;

interface Fruit
{
public void plant();
public void blossom();
public void outcome();
}

class Apple implements Fruit
{
Apple(){this.plant();}
public void plant(){System.out.println("Plant a apple");};
public void blossom(){System.out.println("Apple blossomed");};
public void outcome(){System.out.println("Apple outcomed");};
}
class Pear implements Fruit
{
Pear(){this.plant();}
public void plant(){System.out.println("Pear a apple");};
public void blossom(){System.out.println("Pear blossomed");};
public void outcome(){System.out.println("Pear outcomed");};
}

interface gardenerBase //Garden,是不能改变的.以后增加一个水果只需要 再写个类继承它!
{
public Fruit getFruit();
}
class AppleGardener implements gardenerBase//种植Apple的Garden
{
private static AppleGardener singleton;
private AppleGardener(){;}
public static AppleGardener getGardener()
{
if(singleton==null)
singleton = new AppleGardener();
return singleton;
}
public Fruit getFruit()
{
return new Apple();
}
}
class PearGardener implements gardenerBase//种植Pear的Garden
{
private static PearGardener singleton;
private PearGardener(){;}
public static PearGardener getGardener()
{
if(singleton==null)
singleton = new PearGardener();
return singleton;
}
public Fruit getFruit()
{
return new Pear();
}
}

public class MyFirstOCPJAVA
{
public static void main(String []a)
{
Fruit tempApple;
gardenerBase appleGarden = AppleGardener.getGardener();
tempApple = appleGarden.getFruit();

Fruit tempPear;
gardenerBase pearGarden = PearGardener.getGardener();
tempPear = pearGarden.getFruit();
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
duanleigang
2008-11-12
知道答主
回答量:17
采纳率:0%
帮助的人:18.4万
展开全部
工厂很好用,不用new
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yanweimin7
2008-11-12 · 超过22用户采纳过TA的回答
知道答主
回答量:130
采纳率:0%
帮助的人:72.7万
展开全部
先问一下,你知道开闭原则吗,不知道的话有代码也没用

i fule you tototo, 有种就自己写,有种就不交
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式