设计模式(简单介绍)

一、模式的概念

模式可以理解为是一种规范;模式的设计是因为语言不够灵活,不能适应复杂的场景经过时间经验的积累而想出来的办法。


二、设计模式

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。

三、常用的设计模式

1.简单的工厂模式(实质将这些对象放在getDB()函数中,在多次使用时从这个函数中判断取值)

工厂模式(Factory Pattern)是 Java 、最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

// 简单工厂(php

class MySQL {

}
class Sqlite {

}
//工厂
class Factory {
    public static function getDB($type) {
        if($type == 'MySQL') {
            return new MySQL();
        } else if($type == 'Sqlite') {
            return new Sqlite();
        } else {
            throw newException("sorry", 1);
           
        }
    }
}//获取DB对象

print_r(Factory::getDB(‘mysql’));

2.单例模式(别人只要new就能拿到的对象)

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

<script>
        function Person() {
            this.name="muzidigbig";
            this.age="20";
            this.eat=function () {
                alert("我是吃货!")
            }
        }
//        创建实例
        var p = new Person();
        console.log(p.name);
        console.log(p.age);
        console.log(p.eat());
    }

</script>

3.抽象工厂

开闭原则:对类的增加开放,对类的修改关闭

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。

4.观察者模式

当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。

<style>
    div {
        width: 80%;
        height: 200px;
        border: 1px solid blue;
        margin: 10px;
    }
</style>
<body>
<select name="sel" id="sel">
    <option value="0">女式风格</option>
    <option value="1">男式风格</option>
</select>
<div id="test1">1</div>
<div id="test2">新闻</div>
<div id="test3">广告</div>
</body>
<script>
    var sel = document.getElementById('sel');
    sel.onchange = function() {
        if( this.value == '1' ) {
            document.getElementById('test2').innerHTML = '足球新闻';
            document.getElementById('test3').innerHTML = '大众汽车';
        } else if(this.value == '0') {
            document.getElementById('test2').innerHTML = '宋重鸡来华';
            document.getElementById('test3').innerHTML = '化妆品';
        }
    }
</script>

5.责任链模式

顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。

在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。

其它可查看:http://www.runoob.com/design-pattern/design-pattern-tutorial.html


若有不足请多多指教!希望给您带来帮助!

猜你喜欢

转载自blog.csdn.net/muzidigbig/article/details/81046209