用简单的例子说明提升可维护性的设计模式

此文写给想要理解设计模式,但认为《设计模式》中所举的例子过于复杂的读者。

前人的经验告诉我们:使用以下设计模式提升软件的可维护性:

创建型模式:将实例化过程抽象化

1. 工厂方法

2. 抽象工厂

3. 发

结构型模式:通过组合类和对象来获得更大的结构

1. 

行为模式


1.1 工厂模式

工厂模式的原则就是:绝对不要让用户直接new对象。

我们现在有产品接口、两个产品类:

public interface Fruit {
    void whatIm();
}
public class Apple implements Fruit {
    @Override
    public void whatIm() {
        //苹果
    }
}
public class Pear implements Fruit {
    @Override
    public void whatIm() {
        //
    }
}

先看看简单工厂:

public class FruitFactory {

    public Fruit createFruit(String type) {

        if (type.equals("apple")) {//生产苹果
            return new Apple();
        } else if (type.equals("pear")) {//生产梨
            return new Pear();
        }

        return null;
    }
}

它根据传入参数的不同生产不同的产品。但是如果有新增加的产品,就要修改工厂类了。有些人觉得这不妥,并且认为,每种产品需要有一个工厂。

于是我们需要把两种产品的new操作包装起来,写一个工厂接口,两个工厂对象:

public interface FruitFactory {
    Fruit createFruit();//生产水果
}
public class AppleFactory implements FruitFactory {
    @Override
    public Fruit createFruit() {
        return new Apple();
    }
}
public class PearFactory implements FruitFactory {
    @Override
    public Fruit createFruit() {
        return new Pear();
    }
}

这就是工厂方法了。

用户用如下方法使用:

AppleFactory appleFactory = new AppleFactory();
PearFactory pearFactory = new PearFactory();
Apple apple = (Apple) appleFactory.createFruit();//获得苹果
Pear pear = (Pear) pearFactory.createFruit();//获得梨

1.2 抽象工厂模式

现在我们有两种产品:CPU、屏幕

CPU有两种:850、650

屏幕有两种:大、小

所以我们一共有六个类:CPU接口、850CPU、650CPU、屏幕接口、大屏幕、小屏幕

现在写出抽象工厂接口、红米手机抽象工厂、小米手机抽象工厂

小米手机抽象工厂包含了850CPU工厂、大屏幕工厂的功能

红米手机抽象工厂包含了650CPU工厂、小屏幕工厂的功能

总结一下,抽象工厂就是把两种不同的工厂方法拼在一起。


待补充

猜你喜欢

转载自www.cnblogs.com/snt165/p/11074899.html