简单工厂

//手机接口,定义手机规范,不负责实现
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();
    
  }


}

posted @ 2016-12-18 19:37  半仙人  阅读(139)  评论(0编辑  收藏  举报