解析简单工厂模式和适配器模式

简单工厂模式通俗来说,不直接new对象,而是让工厂类去new实例对象。

以手机工厂为例,一个手机工厂可以生产Iphone,也可以生产AndoridPhone,也可以产生OtherPhone。

实现步骤:

1,找出类的共性,比如功能相同,手机都可以发送短信,那么新建一个Phone的接口,里面写一个抽象方法send

2,新建Iphone、AndoridPhone、OtherPhone的类,都实现Phone接口,并重写send方法

3.新建工厂类,新建造手机方法,通过手机名来new相应的对象

4,测试类,使用工厂的造手机方法来获取不同手机的实例

优点:通过手机工厂来new实例,实现不同的方法。而不是直接new不同手机,再写手机方法。

缺点:工厂类,如果新添“小米手机”等其他手机,那么还得重新修改工厂类。

源码:

package FactoryDemo;
/**
 * 定义一个接口
 * @author Mr.骆
 *
 */
public interface Phone {
public void send();

}

package FactoryDemo;


public class MyPhone implements Phone{


@Override
public void send(){
System.out.println("MyPhone正在发短信");
}


}

package FactoryDemo;


public class Iphone implements Phone{


@Override
public void send() {
System.out.println("Iphone正在发短信");
}


}

package FactoryDemo;


public class AndoridPhone implements Phone{


@Override
public void send() {
System.out.println("AndoridPhone正在发短信");
}


}

package FactoryDemo;


public class Factory {
public static void show(String type){
if(type.equals("")){
System.out.println("您输入的为空");
return;
}
Phone p=null;
if("Iphone".equals(type)){
p=new Iphone();
}else if("AndoridPhone".equals(type)){
p=new AndoridPhone();
}else if("MyPhone".equals(type)){
p=new MyPhone();
}
p.send();
}
}

package FactoryDemo;


public class FactoryDemo {
public static void main(String[] args) {
new Factory().show("Iphone");
new Factory().show("AndoridPhone");
new Factory().show("MyPhone");
new Factory().show("");

}
}

适配器模式:

功能:使用一个现有的接口,它有许多功能,但是我只需要其中的一个,不想重写其他方法,这时候就使用适配器模式。

实现步骤:

1,新建一个接口,有许多抽象功能。

  2,新建一个AdapterDemo类来实现这个接口,重写接口的所有功能。

3,新建一个MyAdapter继承AdapterDemo,重写自己所需的功能。

源码:

package AdapterDemo;


public interface Windows {
public void max();
public void min();
public void close();
}

package AdapterDemo;


public class WindowsAdapter implements Windows{


@Override
public void max() {
// TODO Auto-generated method stub

}


@Override
public void min() {
// TODO Auto-generated method stub

}


@Override
public void close() {
// TODO Auto-generated method stub

}


}package AdapterDemo;


public class MyAdapter extends WindowsAdapter{
public void close(){
System.out.println("实现windows的关闭");
}
}

package AdapterDemo;


public class AdapterDemo {
public static void main(String[] args) {
new MyAdapter().close();
}
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值