简单工厂

来源:互联网 发布:python for quants 编辑:程序博客网 时间:2024/05/21 10:17

工厂类在我们的工程中比较常见,在这里介绍一下简单工厂的写法,比较简答,不多说,看代码大笑

package 工厂模式2;
/**
 * 定义一个接口,里面有若干个方法
 * @author lang
 *
 */
public interface Iphone {


/**
* 生产的手机可以发短信
*/
public void sendMessage();
/**
* 生产的手机可以照照片,自拍神器嘛,还是必须得有的
*/
public void TakePhoto();
/**
* 生产的手机可以打电话,必须的呀,要不就不叫手机了
*/
public void talkWithFamily();
/**
* 还有若干个功能,我实在是写不完了,哈哈。。。
*/

}

package 工厂模式2;


/**
 * 就以高端大气上档次的iphone为例了,但我还是  love my country !!!
 * @author lang
 *
 */
public class Iphone4 implements Iphone{


@Override
public void sendMessage() {
System.out.println("Iphone4 可以打电话");
}


@Override
public void TakePhoto() {
System.out.println("Iphone4可以拍照片");

}


@Override
public void talkWithFamily() {
System.out.println("Iphone4可以和家人通话");
}


}

package 工厂模式2;


public class Iphone5 implements Iphone {


@Override
public void sendMessage() {
System.out.println("Iphone5 可以打电话");
}


@Override
public void TakePhoto() {
System.out.println("Iphone5可以拍照片");

}


@Override
public void talkWithFamily() {
System.out.println("Iphone5可以和家人通话");
}


}


package 工厂模式2;


public class Iphone6 implements Iphone {


@Override
public void sendMessage() {
System.out.println("Iphone6 可以打电话");
}


@Override
public void TakePhoto() {
System.out.println("Iphone6可以拍照片");

}


@Override
public void talkWithFamily() {
System.out.println("Iphone6可以和家人通话");
}


}

//真正重要的

package 工厂模式2;


/**
 * 生产手机的厂商
 * @author lang
 *
 */
public class IphoneFactory {


static Iphone phone = null;
public static Iphone createPhone(Class c){
try {
//这里通过类反射机制,虽然我也不熟悉,但要敢于尝试新事物,重要的代码要写上三遍呦,这样才不会忘记!!!哈哈哈。。。
//phone = (Iphone) Class.forName(c.getName()).newInstance();
//phone = (Iphone) Class.forName(c.getName()).newInstance();
phone = (Iphone) Class.forName(c.getName()).newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return phone;
}
}


package 工厂模式2;


public class IphoneCompany {


public static void main(String[] args) {
//大牛来生产手机了,没难懂的地方就不解释了
System.out.println("给我生产Iphone4手机");
Iphone iphone4 = IphoneFactory.createPhone(Iphone4.class);
iphone4.sendMessage();
iphone4.TakePhoto();
iphone4.talkWithFamily();

//生产iphone5手机
System.out.println("生产Iphone5手机");
Iphone iphone5 = IphoneFactory.createPhone(Iphone5.class);
iphone5.sendMessage();
iphone5.TakePhoto();
iphone5.talkWithFamily();

System.out.println("生产Iphone6手机");
Iphone iphone6 = IphoneFactory.createPhone(Iphone6.class);
iphone6.sendMessage();
iphone6.TakePhoto();
iphone6.talkWithFamily();
}


}


是不是很简单,将来要是iphone7 iphone8出来了,直接继承Iphone接口,就可以量产了,岂不美哉大笑




0 0
原创粉丝点击