设计模式
来源:互联网 发布:吉林广电网络集团 编辑:程序博客网 时间: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方法时,则会出现创建多个对象的情况,所以要加上同步锁,当一个线程进入该方法后,只能等该方法结束后,其他线程才能进入此方法;
阅读全文
0 0
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式~~~~~~~~~~
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 商品添加-选择商品类型自动加载商品属性
- 如何解决类模板的分离编译问题?
- MongoDB远程连接 Login error的原因及解决办法 Linux shell 脚本命令
- 正则表达式
- git pull时遇到的问题及解决方法
- 设计模式
- Java基础常识
- shell编程test命令用法
- Android开发学习——事件监听方式
- 设计模式
- 【iOS】类簇(class cluster)
- 求组合数+取模,详解
- java变量的规则
- 利用BP神经网络对语音数据进行分类