码迷,mamicode.com
首页 > 其他好文 > 详细

简单工厂

时间:2016-12-18 21:10:01      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:定义   cto   interface   void   多态   []   one   继承   工厂   

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


}

简单工厂

标签:定义   cto   interface   void   多态   []   one   继承   工厂   

原文地址:http://www.cnblogs.com/jianbanxian/p/6195299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!