android设计模式-工厂模式

简单工厂模式:一个抽象产品类,可以派生出多个具体产品类。一个具体工厂类,通过往此工厂的static方法中传入不同参数,产出不同的具体产品类实例。

工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类只能创建一个具体产品类的实例。

抽象工厂模式: 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。    一个抽象工厂类,可以派生出多个具体工厂类。    每个具体工厂类可以创建多个具体产品类的实例。

总的来说就是在工厂中new 具体实现的子类-产品的具体实现。而对于用户,不关心他是怎么生成的,只需要关注工厂即可。所有的new 对象都在工厂。后面的去new工厂的时候调用理解成多态。

同时注意产品或工厂的方法抽象出来。

直接是实体工厂去new的设计模式叫简单工厂

有个工厂抽象类,并每个产品都有一个工厂去生产new 对象 叫工厂方法

一个用于创建对象的接口,让子类决定实例化哪一个类。

不需要生产一个产品就弄一个实体工厂。如果有新的东西过来,同样定义一个抽象工厂(和下面的对应,这是工厂方法),然后用之前的工程去new 出对象抽象工厂放抽象产品的接口或抽象对象,new回去才能调到产品那边

工厂方法和抽象工厂区别就是,工厂方法只生成一个产品,抽象工厂生成多个。简单点就是Factcty的那个接口或者类。加一个还是多个抽象产品类或接口,加多个就是抽象方法。加一个就是工厂方法

1.定义:在基类中定义创建对象的一个接口,让子类决定实例化哪个类。工厂方法让一个类的实例化延迟到子类中进行。

2.分类:
(1)简单工厂,又称静态工厂方法模式。
(2)工厂方法,又称多态性工厂模式。
(3)抽象工厂,又称工具箱模式。

3.为什么要使用工厂模式
(1)解耦:把对象的创建和使用过程分开。
(2)降低代码重复:如果创建某个对象的过程都很复杂,需要一定的代码量,而且很多地方都要用到,那么就会有很多的重复代码。
(3)降低维护成本:由于创建过程都由工厂统一管理,所以发生业务逻辑变化,不需要找到所有需要创建对象B的地方去逐个修正,只需要在工厂里修改即可,降低维护成本。

二、简单工厂模式

1.适用场景:
(1)需要创建的对象较少
(2)客户端不关心对象的创建过程

2.简单工厂模式的角色分配:
(1)工厂(Factory)角色 :简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。
(2)抽象产品(Product)角色 :简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
(3)具体产品(Concrete Product)角色:简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例

3.简单工厂实例
eg:创建一个可以绘制不同形状的绘图工具,可以绘制圆形,正方形,三角形,每个图形都会有一个draw()方法用于绘图。

(1)创建Shape接口

public interface Shape {
    void draw();
}

(2)创建实现该接口的集体图形类

public class Circle implements Shape {
    public Circle(){
        System.out.println("Circle");
    }

    @Override
    public void draw() {
        System.out.println("Draw Circle");
    }
}

public class Rectangle implements Shape {

    public Rectangle(){
        System.out.println("Rectangle");
    }
    @Override
    public void draw() {
        System.out.println("Draw Rectangle");
    }
}

public class Square implements Shape {
    public Square() {
        System.out.println("Square");
    }

    @Override
    public void draw() {
        System.out.println("Draw Square");
    }
}

(3)创建工厂类

public class ShapeFactory {
    public static Shape createShape(String shapeType) { //注意是用的接口或者抽象类作为修饰对象!!!
        if (shapeType ==
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值