设计模式
文章平均质量分 67
test_xxxx
这个作者很懒,什么都没留下…
展开
-
代理模式
代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问下面是代理模式的UML图: 下面是实际代码的Demo:定义一个接口或者是一个抽象类也行:public interface Subject { public void request();}被代理的类:public class RealSubject implements Subjec原创 2013-08-22 13:29:02 · 516 阅读 · 0 评论 -
适配器模式
适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。下面是Adapter结构图: 下面演示一个简单的Demo:Target类:public class Target { public void request() { System.out.println("一般"原创 2013-08-30 19:31:51 · 439 阅读 · 0 评论 -
开放-封闭原则
开放-封闭原则(Open-Close Principle):对于扩展是开放的(Open for extension),对于更改是封闭的(Closed for modification)怎么样才能做到Open for extension,Closed for modification?抽象编程,抽象出一个大概的需求,这个抽象是不可变的,但是它的实现却是自由发挥的,通过抽象来隔离以后发生的同类变化原创 2013-08-15 14:02:09 · 531 阅读 · 0 评论 -
依赖倒转原则&里氏代换原则
依赖倒转原则(Dependence Inversion Principle):简称DIP,它有两个原则,A:高层的模块不应该依赖低层的模块,两个都应该依赖抽象 B:抽象不应该依赖细节,细节应该依赖于抽象,这个也就是说模块之间的关系是通过抽象的东西来关联、依赖的,模块之间不产生任何的直接关系。里氏代换原则(Liskov Substitution Principle):简称LSP,子类型必须能原创 2013-08-15 15:07:18 · 700 阅读 · 0 评论 -
简单的工厂模式
简单的工厂模式:其实也叫做静态工厂方法,这种模式的核心特点是通过传进去的参数来判断创造怎么样的实例现在演示一个Demo:1.建立一个父类public class Sport { public void play() { System.out.println("sport"); }}2.有几个子类继承了这个父类public class Swim extend原创 2013-08-14 20:10:03 · 535 阅读 · 0 评论 -
单一责任原则
单一责任原则(Simple Responsibility Principle):又简称为SRP,通俗的解释就是一个类,应该仅有一个引起它变化的原因,很简单的解释就是一个类只负责一向责任就o了。为什么会产生这样的编程原则呢?因为当一个类中含有两个责任的时候的,一个责任的变化可能会影响另外一个责任的实现,这样的互相影响不利用代码的可复用性,修改起来也是相当的费劲,而SRP就可以很好的解决这样的问题原创 2013-08-15 12:40:34 · 789 阅读 · 0 评论 -
策略模式
策略模式:封装了一系列的算法,用户不直接与这些算法打交道,独立于使用用户而变化策略模式的三个组成条件:1.抽象的策略角色2.具体的策略角色3.环境角色,持有一个策略角色的引用,为用户服务的类下面演示一个Demo:1.抽象的策略角色public interface Strategy { public void print();}2.几个实现了原创 2013-08-14 20:53:09 · 563 阅读 · 0 评论 -
观察者模式
观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象,这个主体对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。下面是观察者模式的结构图: 下面演示一个Demo:Subject类:abstract class Subject { private List observers = new ArrayList(); publ原创 2013-08-26 16:40:10 · 466 阅读 · 0 评论 -
建造者模式
建造者模式(Builder):将一个复杂对象的构建与它表示分离,使得同样的构建过程可以创建不同的表示。下面是Builder的结构图: 下面演示一个Demo:创建一个产品类,由多个部件组成:public class Product { List parts = new ArrayList(); public void add(String part) {原创 2013-08-25 14:24:31 · 567 阅读 · 0 评论 -
外观模式
外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。下面是外观模式的结构图: 下面接着演示一个Demo:Facade类:public class Facade { SubSystemOne one; SubSystemTwo two; SubSystemThree three; SubSy原创 2013-08-24 13:32:09 · 579 阅读 · 0 评论 -
原型模式
原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象下面是原型模式的结构图:下面就演示一个Demo:首先创建一个抽象类Prototype,它要实现Cloneable接口,重写clone方法,只有这样类才具有克隆的功能abstract class Prototype implements Cloneable{ private Stri原创 2013-08-23 12:59:42 · 482 阅读 · 0 评论 -
模板方法模式
模板方法模式(TemplateMethod):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤。下面是模板方法模式的结构图:下面演示一个Demo:定义个AbstractClass类:abstract class AbstractClass { /** * 一些放到子类中去实现的抽象行为 */原创 2013-08-23 18:05:00 · 509 阅读 · 0 评论 -
工厂模式
工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法是一个类的实例延迟到其子类。下面是工厂方法模式的结构图: 下面演示一个Demo: 定义Product接口及它的实现类:public interface Product { public void printName();} public class原创 2013-08-22 17:51:20 · 500 阅读 · 0 评论 -
单例模式
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。Singleton结构图Singleton类:public class Singleton { private static Singleton instance; /** * 构造方法让其private,这就堵死了外界利用 * new创建此类实例的可能 * @author Guo */ p原创 2013-09-11 17:27:52 · 456 阅读 · 0 评论