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

Posted snt165

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用简单的例子说明提升可维护性的设计模式相关的知识,希望对你有一定的参考价值。

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

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

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

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

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


待补充

 

以上是关于用简单的例子说明提升可维护性的设计模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式-简单工厂模式例子

理论与实践:如何写好一个方法

模式窗体与非模式窗体

设计模式之简单工厂模式

用最简单的例子说明设计模式之责任链建造者适配器代理模式享元模式

设计模式这样玩泰简单(Golang版)-状态模式