转载请注明出处:http://blog.youkuaiyun.com/droyon/article/details/8683919
简单工程模式:简单工厂并不是一个设计模式,它是一种变成习惯。
案例分析:
在去上地软件园的路上,有很多粥店。现在可能少了,也就一两家。他们卖的粥用纸杯装盛,你只需要告诉他们什么粥即可。他们那里有大米粥,小米粥,八宝粥。
1、Congee.java//粥基类
public class Congee {
private String name;
public Congee(String name){
this.name = name;
}
public void takeCup(){
System.out.println("拿出一个纸杯");
}
public void fillCongee(){
System.out.println("装入"+name);
}
public void sell(){
System.out.println("卖出这杯粥,价格:"+getPrice(name)+"元");
}
private double getPrice(String name){
if(name.equals("大米粥")){return 2;}
if(name.equals("小米粥")){return 2;}
if(name.equals("八宝粥")){return 2.5;}
if(name.equals("黑米粥")){return 2.5;}
return 0;
}
}
2、Damizhou.java
public class Damizhou extends Congee{
public Damizhou() {
super("大米粥");
}
}
3、Xiaomizhou.java
public class Xiaomizhou extends Congee{
public Xiaomizhou() {
super("小米粥");
}
}
4、Babaozhou.java
public class Babaozhou extends Congee{
public Babaozhou() {
super("八宝粥");
}
}
5、SimpleFactory.java
public class SimpleFactory {
public /*static*/ Congee getCongee(String name){
if(name.equals("大米粥")){
return new Damizhou();
}else if(name.equals("小米粥")){
return new Xiaomizhou();
}else if(name.equals("八宝粥")){
return new Babaozhou();
}else {
return new Congee("null");
}
}
}
6、CongeeStore.java
public class CongeeStore {
private SimpleFactory factory;
public CongeeStore(SimpleFactory factory){
this.factory = factory;
}
public void buyCongee(String name){
System.out.println("来一份:"+name);
sellCongee(name);
}
private void sellCongee(String name){
Congee congee = factory.getCongee(name);
congee.takeCup();
congee.fillCongee();
congee.sell();
}
}
7、Test.java
public class Test {
public static void main(String args[]){
SimpleFactory factory = new SimpleFactory();
CongeeStore congeeStore = new CongeeStore(factory);
//有人买一份大米粥
congeeStore.buyCongee("大米粥");
System.out.println("----------------------------------------");
//有人想买八宝粥
congeeStore.buyCongee("八宝粥");
}
}
运行结果:
来一份:大米粥
拿出一个纸杯
装入大米粥
卖出这杯粥,价格:2.0元
----------------------------------------
来一份:八宝粥
拿出一个纸杯
装入八宝粥
卖出这杯粥,价格:2.5元
总结:在工厂类中处理创建对象的细节,从具体的使用类中分离。我们在CongeeStroe类中使用Congee,在SimpleFactory类中处理创建的细节。
在这个例子中,我们的需要初始化一个工厂类,然后才能使用getCongee方法,其实我们也可以将getCongee声明为静态类,这样就可以直接使用这个类了。
本文通过一个简单的粥店销售场景,介绍了简单工厂模式的概念及其应用。通过实例代码展示了如何利用简单工厂模式来创建不同类型的粥对象,并实现了具体业务逻辑。
626

被折叠的 条评论
为什么被折叠?



