设计模式__工厂模式

一.简单工厂模式

 直接看代码感悟其中的意思

   1>首先创建一个共有接口

public interface CarInterface {
    public void printCarName();
}

  2>分别创建接口的各个实现,这里做是做三个例子

public class BYS implements CarInterface {
    @Override
    public void printCarName() {
        System.out.println("我的比亚迪车");
    }
}
public class KaiDiLaKe implements CarInterface {
    @Override
    public void printCarName() {
        System.out.println("我的凯迪拉克");
    }
}
public class XianDai implements  CarInterface {
    @Override
    public void printCarName() {
        System.out.println("我的现代车");
    }
}

  3>创建工厂类

public class CarFactory {
    public static  CarInterface getCar(String carName){
        if("byd".equals(carName)){
            return new BYS();
        }else if("kaidilake".equals(carName)){
            return new KaiDiLaKe();
        }else if("xiandai".equals(carName)){
            return new XianDai();
        }else
            return null;
    }
}

  4>测试

public class Test {
    public static void main(String[] args) {
        String carName = "byd";
        CarInterface car = CarFactory.getCar(carName);
        car.printCarName();
    }
}

 

二,抽象工厂模式(知道逻辑即可)

  

//抽象工厂接口--->人类
public interface HuMan {
public void say();
}

----------------------------------------------------
//实现抽象工厂的男人类
public class Man implements HuMan {
@Override
public void say() {
System.out.println("男人");
}
}

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

//实现抽象工厂的女人类
public class Woman implements HuMan{
    @Override
public void say() {
System.out.println("女人");
}
}
-----------------------------------------------------
//工厂接口
public interface Factory {
public HuMan createMan();
}
-----------------------------------------------------
//男人工厂,专门生产男人
public class ManFactory implements Factory {
    @Override
public HuMan createMan() {
return new Man();
}
}
--------------------------------------------------------
女人工厂专门生产女人
public class WoManFactory implements Factory {
    @Override
public HuMan createMan() {
return new Woman();
}
}
----------------------------------------------------------------
//测试代码
public class Test {
    public static void main(String[] args) {
Factory factory = new ManFactory();
HuMan man = factory.createMan();
man.say();
}
}
 
三 ,工厂方法模式(参考:http://www.jb51.net/article/74466.htm)
  
public abstract class Produce {
//产品类的公共方法
public void method1(){
//业务处理
System.out.println("抽象类中的非抽象方法");
}

public abstract void method2();
}
-----------------------------------------------------------------
public class CreateProduce_A extends Produce{
@Override
public void method2() {
//业务逻辑处理
}
}
--------------------------------------------------------------------
public class CreateProduce_B extends Produce {
@Override
public void method2() {
//业务逻辑处理
}
}
---------------------------------------------------------------------
//抽象工厂类
public abstract class AbstractFactory {
/**
*创建一个产品类,其输入参数类型可以自行设置,通常为String,Enum, Class,当然可以为空
*/
public abstract <T extends Produce> T createProduce(Class<T> clazz);
}
-----------------------------------------------------------------------------------
public class JutiFactory extends AbstractFactory {
@Override
public <T extends Produce> T createProduce(Class<T> clazz) {
Produce product = null;
try {
product = (Produce)Class.forName(clazz.getName()).newInstance();
} catch (Exception e) {
//异常处理
}
return (T)product;
}
}
--------------------------------------------------------------------------------------
public class Test {
public static void main(String[] args) {
AbstractFactory creator = new JutiFactory();
Produce product = creator.createProduce(CreateProduce_A.class);
/**
*继续业务处理
*/
}
}
简单工厂模式,,不懂装懂…………睡觉算了

 

  

posted @ 2017-04-01 23:55  青春不打烊  阅读(153)  评论(0编辑  收藏  举报