大话设计模式总结
来源:互联网 发布:兄弟连php 百度云 编辑:程序博客网 时间:2024/05/17 01:46
实习时给公司写代码,完全从零开始写,一开始写的很爽,因为可以随心所欲,不用先看别人的代码,完全按照自己的想法来实现。
写到后来发现当有需求变化时,不得不更改一些代码,结果由于一开始没有考虑的周全,结果在需求发生变化,没有一个好的设计模式,改的我心力憔悴。
虽然自己也明白写代码遵循抽象,重构的一些东西,但是毕竟没有受过良好训练,对设计模式的规范化没有清晰的认识。
于是最近一段时间读了下《大话设计模式》,受益匪浅,有些常用的设计模式还是很有必要记下来的。
1.单例(Singleton)模式:
这应该是最简单的一个模式了。
单例模式旨在确保某个类只有一个实例,并且为之提供一个全局访问点。
就是这个类自始至终只能有一个实例,并且这个实例可以作为全局变量。
简单的实现方法:
public class Singleton{//静态实例属性private static Singleton instance = new Singleton();
<span style="white-space:pre"></span>//构造方法设为私有的private Singleton(){};
<span style="white-space:pre"></span>//设置一个静态方法来获得这个类的唯一实例public static Singleton getInstance(){return instance;}}
2.工厂(Factory)模式:将类的实例化方法一个工厂类里去实现。
工厂模式主要是代替new 关键字来实例化我们的类,但是如果我们只是实例化一个类,我们完全不必使用工厂模式。但是如果我们需要在实例化类的同时做一下别的工作,如果把这些代码写在类的构造方法里,这样不仅看起来很丑,后期维护也会很费事。
如果我们把这些工作用一个工厂来干,这样后来再改需求的时候就能避免不必要的麻烦。
简单的实现方法:
public interface people{ public void say();} public class chinese implements people{ public void say(){ System.out.println("说中国话"); }} public class american implements people{ public void say(){ System.out.println("speak english"); }} public class peopleFactory{ public static people create(int type){ if(type==1){ return new chinese(); }else if(type==2){ return new american(); } } }
//代码来源网络
3.代理模式
代理是基本的设计模式之一,它是你为了提供额外的或不同的操作,而插入的用来代替“实际”的对象的对象。这些操作通常涉及与“实际”对象的通信,因此代理模式通常充当中间人的角色。
class SimpleProxyDemo{public static void consumer(Interface iface){iface.doSometing();iface.somethinfElse("hehehe");}public static void main(String[] args){consumer(new RealObject());consumer(new SimpleProxy(new RealObject()));}}interface Interface{void doSometing();void somethinfElse(String arg);}class RealObject implements Interface{public void doSometing(){System.out.println("doSometing");}public void somethinfElse(String arg){System.out.println("somethinfElse " + arg);}}class SimpleProxy implements Interface{private Interface proxied;public SimpleProxy(Interface proxied){this.proxied = proxied;}public void doSometing(){System.out.println("SimpleProxy doSometing");proxied.doSometing();}public void somethinfElse(String arg){System.out.println("SimpleProxy somethinfElse " + arg);proxied.somethinfElse(arg);}}从代码看出
SimpleProxy 充当了代理角色,我们执行SimpleProxy 的方法,实际上会被转移到RealObject的身上。此时,我们若想提供额外的操作,我们不用对RealObject进行修改,而是使用更改SimpleProxy 这个代理角色的代码就可以了
- 大话设计模式总结
- 大话设计模式总结
- 大话设计模式总结
- 大话设计模式简单总结
- 《大话设计模式》读书总结
- 大话设计模式学习总结
- 大话设计模式阅读总结
- 《大话设计模式》学习总结
- 大话设计模式之总结
- 大话设计模式总结---设计模式总览
- 【设计模式】大话设计模式总结
- linkin大话设计模式--常用模式总结
- 【大话设计模式】--创建型模式总结
- 大话设计模式----各种模式概括总结
- 大话设计模式总结2-策略模式
- 大话设计模式-备忘录模式学习总结
- 大话设计模式-适配器模式学习总结
- 大话设计模式-外观模式学习总结
- opencv 2.4.4自带例子总结
- AI学习过程
- 一日一练 六角填数
- 苹果审核规则翻译
- 想写程序吗?远离你的计算机!
- 大话设计模式总结
- js中apply方法的使用
- 使用get或者post方式数据交互
- 操作系统常见简答题
- 在java语言中为什么有时候构造方法有时要构造一个没有参数的方法
- 高并发Web服务的演变——节约系统内存和CPU
- PHP判断一个请求是Ajax请求还是普通请求
- 简单好用的pdf转换成ppt转换器软件
- 从ubuntu系统安装,环境搭建到安卓系统编译