设计模式

来源:互联网 发布:吉林广电网络集团 编辑:程序博客网 时间:2024/06/05 10:01

1.设计模式的概念:设计模式(Design pattern)是一套被反复使用、多数人知晓的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

2设计模式的优点:  使代码编制真正工程化、统一化
                                  确立通用术语,提升代码易读性
                                  使软件更容易修改和维护
                                  降低代码耦合,提升软件扩展性

3.工厂设计模式:概念:工厂模式是由一个工厂对象决定创建出哪一个具体实例

实例

/** * 手机类,用定义手机实体的一些属性和行为 *  * */public abstract class Phone {public String type;public Phone(String type){this.type = type;}public abstract void call();}public class IPhone extends Phone{public IPhone(String type) {super(type);}public void call() {System.out.println("用苹果手机打电话");}}public class HuaWeiPhone extends Phone{public HuaWeiPhone(String type) {super(type);}public void call() {System.out.println("用华为手机打电话");}}/** * 所有工厂的抽象父类:工厂类的总部 * * */public abstract class Factory {/** * 工厂抽象类的抽象方法,用来定义每个具体子类需要实现的操作 *  */public abstract Phone createPhone();}public class HuaweiFactory extends Factory{public Phone createPhone() {return new HuaWeiPhone("p0");}}public class IPhoneFactory extends Factory{public Phone createPhone() {IPhone iphone = new IPhone("iphone6");return iphone;}}public class Test {public static void main(String[] args) {Factory factory = new IPhoneFactory();//需要一个苹果手机Phone phone = factory.createPhone();}}
当在业务逻辑方法中用到了手机这个类的对象,当手机类的方法改变后,也不会对业务逻辑方法产生编译错误,就是最下面的test测试类,就算你改变了手机类的构造对象,不不会再test类中发生编译报错,可以直接去工厂方法中进行修改,不需要在业务逻辑中进行修改,也利于代码的维护和扩展。

4.单例模式:

如何实现单例模式:1)定义一个私有的构造方法
                                  2)创建一个私有的该类对象变量

                                  3)创建一个getInstance方法来获取该类的唯一实例

代码实现:

public class Student {private String name;//私有化构造方法private Student(String name){this.name = name;}private static Student stu;public synchronized static Student getInstance(String n){if(stu ==null){stu = new Student(n);}return stu;}public String getName() {return name;}}
当一次调用Student.getInstance时,stu为空,则创建对象,第二次调用Student.getInstance时,则会直接return

注意点:synchronized作用为实现线程安全,当多个线程同时执行getInstance方法时,则会出现创建多个对象的情况,所以要加上同步锁,当一个线程进入该方法后,只能等该方法结束后,其他线程才能进入此方法;