搜索            

无为论坛,没有版主,不删贴不封ID,北美中文论坛,加拿大中文论坛,红卫兵rolia,找工作,面试,职场,学英语,股市,炒股,心态,沟通

无为论坛,没有版主,不删贴不封ID,北美中文论坛,加拿大中文论坛,红卫兵rolia,找工作,面试,职场,学英语,股市,炒股,心态,沟通

连google来一个demo都做不到么?这样把,我帮你一下,这个factory模式是不是你说的factory 模式?你只需要说是,否就可以了。 (IT)

by NO9({m}), 2015-01-21 21:52 @ nice

抽象工厂的接口定义如下所示;
package abstractFactory;
public interface KetchenFactory{
public Food getFood();
public TableWare getTableWare();
}
抽象餐具的接口定义如下所示:
package abstractFactory;
public interface TableWare{
public String getTool();
}
抽象事物的接口定义如下所示:
package abstractFactory;
public interface Food{
public String getEatable();
}
而具体的实现也非常简单,以AKetchen为例子
具体工厂AKetchen的定义如下所示;
package abstractFactory;
public class AKetchen implements KetchenFactory{
public Food getFood(){
return new Milk();
}
public TableWare getTableWare(){
return new Spoon();
}
}

具体餐具(spoon)的定义如下所示:
package abstractFactory;
public class Spoon implements TableWare{
public String getTool() {
return "spoon";
}
}
具体食物(milk)的定义如下所示:
package abstractFactory;
public class Milk implements Food{
public String getEatable(){
return "milk";
}
}
客户端的定义如下:
package abstractFactory;
public class Client{
public void eat(KetchenFactory k){
System.out.println("A person eat "+k.getFood().getEatable()
+" with "+k.getTableWare().getTool()+"!";);
}
public static void main(String[] args){
Client client= new Client();
KetchenFactory kf = new AKetchen();
client.eat(kf);
kf=new BKetchen();
client.eat(kf);
kf= new CKetchen();
client.eat(kf);
}
}
小结:抽象工厂模式特别适合于这样的一种产品结构:产品分为几个系列,在每个系列中,产品的布局都是要同的,在一个系列中某个位置的产品,在另一个系列中一定有一个对应的产品。这样的产品结构是存在的,这几个系列中同一位置的产品可能是互斥的,它们是针对不同客户的解决方案,每个客户都只择其一。
优点:消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。
缺点:当具体产品修改时,相应的工厂类也要做相应的修改。

  522 views

整个话题:

 RSS Feed of thread

 
[x]