安卓系列之设计模式:简单工厂模式

219 阅读1分钟

简单工厂模式是Java常用的一种模式,属于创建型模式。

模块划分

1.工厂接口:一个创建对象的接口。
2.实体类:实现接口的对象,并重新接口的方法。
3.工厂类:定义关键字并创建对应的对象。
4.实现类:传入需要的关键字进行创建需要的对象。

优点

扩展性高,需要一个对象,创建一个对象。

缺点:

在创建多个对象后,复杂性变高,不好维护。

代码

接口: 用于各种形状,内含绘制方法。

package com.elaine.testpattern.simplefactory;

/**
 * 接口
 * 内含方法
 *
 * @author elaine
 */
public interface Shape {
    void draw();
}

实体类:
圆形:实现接口Shape,并重写draw()方法。

package com.elaine.testpattern.simplefactory;

/**
 * 圆形
 *
 * @author elaine
 */
public class Circle implements Shape {

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

正方形:实现接口Shape,并重写draw()方法。

package com.elaine.testpattern.simplefactory;

/**
 * 正方形
 *
 * @author elaine
 */
public class Square implements Shape {

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

长方形:实现接口Shape,并重写draw()方法。

package com.elaine.testpattern.simplefactory;

/**
 * 长方形
 *
 * @author elaine
 */
public class Rectangle implements Shape {

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

*工厂类:*定义关键字以及其对应的对象。

package com.elaine.testpattern.simplefactory;

/**
 * 形状工厂
 * 
 * 根据传入的关键字,对比进行创建对象。
 *
 * @author elaine
 */
public class ShapeFactory {

    public Shape getShape(String shapeType) {
        if (shapeType == null) {
            return null;
        }
        if (shapeType.equalsIgnoreCase("CIRCLE")) {
            return new Circle();
        } else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
            return new Rectangle();
        } else if (shapeType.equalsIgnoreCase("SQUARE")) {
            return new Square();
        }
        return null;
    }
}

*实现类:*传入知晓的关键字进行创建对象。

package com.elaine.testpattern.simplefactory;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import com.elaine.testpattern.R;

/**
 * 简单工厂模式实现类
 * 
 * @author elaine
 */
public class SimpleFactoryActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_simple_factory);
        use();
    }

    private void use() {
        ShapeFactory shapeFactory = new ShapeFactory();
        Shape shapeOne = shapeFactory.getShape("CIRCLE");
        shapeOne.draw();
        Shape shapeTwo = shapeFactory.getShape("RECTANGLE");
        shapeTwo.draw();
        Shape shapeThree = shapeFactory.getShape("SQUARE");
        shapeThree.draw();
    }

}

打印结果:

图片

若帅哥美女对该系列文章感兴趣,可微信搜索公众号(木子闲集)关注更多更新文章哦,谢谢~