一、模式的概念
模式可以理解为是一种规范;模式的设计是因为语言不够灵活,不能适应复杂的场景经过时间经验的积累而想出来的办法。
二、设计模式
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。
三、常用的设计模式
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
若有不足请多多指教!希望给您带来帮助!