设计模式__工厂模式
一.简单工厂模式
直接看代码感悟其中的意思
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);
/**
*继续业务处理
*/
}
}
简单工厂模式,,不懂装懂…………睡觉算了