首页 > 代码库 > 简单工厂
简单工厂
//手机接口,定义手机规范,不负责实现
class interface ICellPhone{
void sendMsg();
}
class Android implements ICellPhone
{
public void sendMsg(){
system.out.println("安卓发短信");
}
}
class Iphone implements ICellPhone
{
public void sendMsg(){
system.out.println("苹果发短信");
}
}
//这是一个工厂-----负责创建手机
class CallPhoneFactory
{
//需要iphone的时候
public static ICellPhone getInstance(Iphone iphone)
{
return new Iphone();
}
//需要android的时候
public static ICellPhone getInstance(Android android)
{
return new Android();
}
//这样每次需要一个新手机的时候,都要匹配一个新方法,显然是不科学的。
//怎么解决这个问题呢?
提出问题:我们需要不同类型的手机,但是实现的功能相同,因此在java面向对象中
有两种解决办法,继承跟多态。
为什么不使用继承,继承的优势是共性与个性的区别,如果使用继承
会出现下面情况
Android android = new Android();
Iphone iphone =new Iphone();
很显然,这样不利于生成对象
//使用多态
ICellPhone android = new Android()
ICellPhone iphone =new Iphone();
便于程序的扩展,
因此我们修改下创建手机对象,使其适应更换手机,不需要变动工厂内创建手机对象的方法
public static ICellPhone getInstance(ICellPhone iCellPhone)
{
return iCellPhone;
}
}
class FactoryDemo
{
public static void main(String[] args){
ICellPhone p = new Android();
p.sendMsg();
//修改后创建对象的方式变为:
ICellPhone P = CallPhoneFactory.getInstance(new Iphone);
p.sendMsg();
ICellPhone P = CallPhoneFactory.getInstance(new Android);
p.sendMsg();
}
}
简单工厂