美文网首页
设计模式(1)工厂模式和抽象工厂模式

设计模式(1)工厂模式和抽象工厂模式

作者: 越过_1b61 | 来源:发表于2019-03-01 11:19 被阅读0次

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,最后的话就是一个工厂的工厂来创建具体的工厂类。

相关文章

  • Android 源码设计模式解析与实战 读书笔记 6 抽象工厂模

    创建型设计模式 —— 抽象工厂模式 1. 抽象工厂模式介绍 抽象工厂模式(Abstract Factory Pat...

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 设计模式[3]-抽象工厂模式-Abstract Factory

    1.抽象工厂模式介绍 抽象工厂模式是创建型设计模式,可以创建一组对象。与工厂方法模式相比,抽象工厂模式中的具体工厂...

  • iOS设计模式-工厂模式

    工厂模式分为简单工厂模式,工厂模式、抽象工厂模式三类。 简单工厂模式 1. 定义 简单工厂模式并不是常用的设计模式...

  • Android设计模式

    1. 设计模式之抽象工厂模式 在学习抽象工厂模式前要先了解一下工厂模式,而抽象工厂模式主要就是为了弥补工厂模式的缺...

  • iOS设计模式(3)适配器模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(4)抽象工...

  • 单件设计模式

    一、定义 设计模式 设计模式就是一种更好的编写代码方案。 常见设计模式 工厂设计模式、抽象工厂设计模式、抽象工厂设...

  • 设计模式系列-抽象工厂模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 简单工厂模式 抽象工厂模式 抽象工厂模式 定义 抽象工...

网友评论

      本文标题:设计模式(1)工厂模式和抽象工厂模式

      本文链接:https://www.haomeiwen.com/subject/skvkuqtx.html