简单工厂模式通俗来说,不直接new对象,而是让工厂类去new实例对象。
以手机工厂为例,一个手机工厂可以生产Iphone,也可以生产AndoridPhone,也可以产生OtherPhone。
实现步骤:
1,找出类的共性,比如功能相同,手机都可以发送短信,那么新建一个Phone的接口,里面写一个抽象方法send
2,新建Iphone、AndoridPhone、OtherPhone的类,都实现Phone接口,并重写send方法
3.新建工厂类,新建造手机方法,通过手机名来new相应的对象
4,测试类,使用工厂的造手机方法来获取不同手机的实例
优点:通过手机工厂来new实例,实现不同的方法。而不是直接new不同手机,再写手机方法。
缺点:工厂类,如果新添“小米手机”等其他手机,那么还得重新修改工厂类。
源码:
package FactoryDemo;
}
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();
}
}