码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-06-24 00:34:21      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:这不   工厂模式   可维护性   对象   抽象工厂   一个   als   apple   告诉   

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

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

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

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工厂、小屏幕工厂的功能

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


待补充

 

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

标签:这不   工厂模式   可维护性   对象   抽象工厂   一个   als   apple   告诉   

原文地址:https://www.cnblogs.com/snt165/p/11074899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!