设计模式----简单工厂模式

简单工厂模式不属于23个设计模式,具体原因没有查阅相关资料,但本人自己觉得可能是因为简单工厂模式不符合了开闭原则才没提升到设计模式的地位对待吧。

新增创建新的对象时,需要修改工厂方法的逻辑,不符合开闭原则。



简单的说工厂模式就是  你扔给工厂一个参数,它给你返回一个具体的对象。


假如说我们需要生产各种品牌的手机,我们又不想自己去建造一个工厂,那我们是不是可以外包给一个专门生产手机的的厂商去做?

我们只要跟手机厂商说要生产的牌子就行了。


下面用一个例子实现之

-------------------------------------------------------------------------------------

我们要生产这样的手机,能打电话,能发短信,能播放视频

//---------------------------------------------------

package com.dp.simpleFactory;

/**
 * 手机
 * @author chendongj
 *
 */
public abstract class Phone {
 
 public void call(){
  System.out.println("手机可以打电话!");
  
 }
 public   void   sendMessage(){
  System.out.println("手机可以发短信!");
  
 }
 public   void   playVideo(){
  System.out.println("手机可以播放视频!");
  
 }

}

//--------具体的iPhone手机-------------------------------------------

package com.dp.simpleFactory;

public class Iphone extends Phone {

 public  void call(){
  System.out.println("iPhone手机在打电话...");
 }
 
    public void sendMessage(){
     
        System.out.println("iPhone在发短信...");
    }
    public void playVideo(){
     System.out.println("iPhone在播放视频...");
    }
   
}


//-------------具体的魅族手机-----------------------------------------------------------

package com.dp.simpleFactory;

public class MeiZuPhone extends Phone{
 public  void call(){
  System.out.println("魅族手机在打电话...");
 }
 
    public void sendMessage(){
     
        System.out.println("魅族手机在发短信...");
    }
    public void playVideo(){
     System.out.println("魅族手机在播放视频...");
    }

}
//-------------------那现在交给手机厂商去生产吧----------------------------------------------

package com.dp.simpleFactory;
/**
 * 手机厂商
 * @author chendongj
 *
 */
public class PhoneFactory {
 
 public static  Phone  createPhone(String  phoneBrand){
  
  if(phoneBrand.equals("iphone")){
   //生产iPhone
   return  new Iphone();
  }
  if(phoneBrand.equals("meizu")){
   //生产魅族
   return  new MeiZuPhone();
  }
  return  null;
  
 }

}

//------------测试(去拿货)------------------------------------------

package com.dp.simpleFactory;

public class TestSimpleFactory {

 /**
  * 测试简单工厂模式
  */
 public static void main(String[] args) {
  //生产iphone
  Phone iphone  = PhoneFactory.createPhone("iphone");
  iphone.call();
  iphone.sendMessage();
  iphone.playVideo();
  System.out.println("--------------------");
  //生产魅族
  Phone meizu = PhoneFactory.createPhone("meizu");
  meizu.call();
  meizu.sendMessage();
  meizu.playVideo();

 }

}

//===========输出结果=========================


iPhone手机在打电话...
iPhone在发短信...
iPhone在播放视频...
--------------------
魅族手机在打电话...
魅族手机在发短信...
魅族手机在播放视频...








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋力向前123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值