1.工厂模式
工厂模式首先就是创建一个abstract抽象类
例如:
public abstract class A {
public String getid();
public String getname();
@Override
public String toString(){
return "id+"+getid()+"name"+getname();
}
}
有两个类实现它:
public class B extends A{
private String B.id;
private String B.name;
//省略一个构造函数
@Override
public String getid(){
return B.id;
}
@Override
public String getname(){
return B.name;
}
}
还有一个类C
public class C extends A{
private String C.id;
private String C.name;
//构造函数
@Override
public String getid(){
return C.id;
}
@Override
public String getname(){
return C.name;
}
}
最后我们有一个工厂类
public class AFactory{
public static A getA(String type,String id,String name){
if("B".equalsignoreCase(type)) return new B(id,name);
else return new C(id,name);
}
}
值得注意的是工厂模式也可以是单例模式
它可以根据你输入的类型进行创建对象!
抽象工厂模式:
首先是类型的创建:
有一个shape类
public abstract class shape{
void draw();
}
还有他的实现类:
public class Rectangle extends shape{
@Override
public void draw(){
System.out.println("Rectangle::draw()");
}
}
public class circle extends shape{
@Override
public void draw(){
System.out.println("shape::draw()");
}
}
其次有一个color类:
public abstract class color{
void paint();
}
还有它的实现类
public class red{
@Override
public void paint(){
System.out.println("red::paint()");
}
public class green{
@Override
public void paint(){
System.out.println("green::paint()");
}
然后就是抽象的工厂:
public abstract class Factory{
public abstract color getcolor(String color);
public abstract shape getShape(String shape);
}
抽象shape工厂
public abstract class ShapeFactory{
@Override
public shape getShape(String shape){
if(shape==null)
return null;
if(shape=="circle")
return new circle();
}
else if (shape=="rectangle")
return new rectangle();
}
@Override
public color getColor(String color){
return null;
}
}
public abstract class ColorFactory{
@Override
public shape getShape(String shape){
return null;
}
@Override
public color getColor(String color){
if(color==red)
return new red();
}
else
return new green();
}
最后根据输入信息创建对应的工厂
public class FactoryProducer{
public static Factory getFactory(String name){
if(name=="color")
return new colorFactory();
else
return new shapeFactory();
}
}
分析一下这个模式
首先创建工厂 Shape和Color抽象工厂并附上两个他们的实现类 circle...和green...
然后创建这两个抽象工厂的工厂abstractFactory并附上他的两个实现类colorFactory和shapeFactory,最后的话就是一个工厂的工厂来创建具体的工厂类。
网友评论