可扩展性与设计模式
文章平均质量分 82
从可扩展性角度简单介绍基本设计模式
sean-zou
这个作者很懒,什么都没留下…
展开
-
命令模式(Command Pattern)
命令模式定义:命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其它对象。命令模式也支持可撤销操作。这个模式貌似和Observer Pattern很像,实际上区别不小:1,Observer Pattern是我有新数据,我给你新数据或者你来取新数据,是数据的传递;Command Pattern是我下达命令,你执行命令,是方法的调用(从这能看出,2种模式处理的场景并不相同)...原创 2013-06-07 11:34:10 · 1323 阅读 · 0 评论 -
桥接模式(Bridge Pattern)
桥接模式定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化看下图手机与手机软件的类图增加一款新的手机软件,需要在所有手机品牌类下添加对应的手机软件类,当手机软件种类较多时,将导致类的个数急剧膨胀,难以维护手机和手机中的软件是什么关系?手机中的软件从本质上来说并不是一种手机,手机软件运行在手机中,是一种包含与被包含关系,而不是一种父与子或者说一般与特殊的关系,通过继承手机...原创 2018-07-22 11:02:29 · 4189 阅读 · 0 评论 -
单例模式(Singleton Pattern)
单例模式定义:单例模式确保一个类只有一个实例,并提供一个全局访问点public class Singleton { public static Singleton instance; private Singleton(){} public static Singleton getInstance(){ if(null == instance){ instance= n原创 2013-06-03 13:48:25 · 1349 阅读 · 1 评论 -
迭代器模式(Iterator Pattern)
1原创 2013-07-16 11:08:03 · 1535 阅读 · 0 评论 -
组合模式(Composite Pattern)
组合模式定义:原创 2013-07-22 11:41:52 · 1306 阅读 · 0 评论 -
备忘录模式(Memento Pattern)
备忘录模式定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态...原创 2018-07-01 19:12:02 · 334 阅读 · 0 评论 -
适配器模式(Adapter Pattern)
适配器模式定义:Adapter Pattern将一个类的接口,转换成客户期望的另一个接口,Adapter Pattern让原本接口不兼容的2个类可以合作无间。原创 2013-06-08 10:19:46 · 1172 阅读 · 0 评论 -
状态模式(State Pattern)
状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类原创 2013-07-29 17:25:58 · 1156 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式定义:抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类其实和策略模式还是蛮像的,只不过现在抽象分离出去的不是一个普通类,而是一个工厂类,并且工厂类依赖于多个抽象类(比如:酱料和火腿)public class Store { private AbstractSourceFactory factory; public Store(原创 2013-06-03 09:24:19 · 1534 阅读 · 0 评论 -
观察者模式(Observer Patten)
观察者模式的定义:观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新考虑到如下一个场景,记者每次获得独家新闻,都需要通知人民日报和新华日报,hi,我有新消息public class SpecificRepoter { private PeopleDaily pd; private XinHuaDaily xd; priv原创 2013-05-25 11:53:40 · 1372 阅读 · 1 评论 -
外观模式(Facade Pattern)
外观模式定义:外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。这个模式比较简单,一个普通出门流程:洗脸 - 刷牙 - 穿衣 - 背包public class Face { public void wash(){ System.out.println("Wash face!"); }}public class Clo原创 2013-06-08 13:09:41 · 1051 阅读 · 0 评论 -
建造者模式(Builder Pattern)
建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示这个模式和模板方法模式特别相似,下面是模板方法模式的示例:public abstract class Beverage { public abstract void addIngredient(); public void addHotWater(){ System.out....原创 2018-06-02 17:27:41 · 693 阅读 · 0 评论 -
模板方法模式(Template Method Pattern)
模板方法模式定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的条件下,重新定义算法中的某些步骤例如:准备一杯咖啡或准备一杯柠檬茶有很多相似之处准备咖啡:烧水- 泡咖啡 - 装杯 - 加糖准备柠檬茶:烧水- 泡茶 - 装杯 - 加柠檬public class Coffee { public void boilWater()原创 2013-06-28 15:17:39 · 1415 阅读 · 0 评论 -
原型模式(Prototype Pattern)
我们来看下下面的代码public class Brand { private String name; private int age; public Brand(String name, int age){ this.name = name; this.age = age; } public String getName...原创 2018-05-30 17:21:01 · 423 阅读 · 0 评论 -
工厂方法模式(Factory Method Pattern)
工厂方法模式定义:工厂方法模式定义了一个创建方法的接口,但由子类决定要初始化的类是哪一个,工厂方法让类把实例化推迟到子类。两家PizzaStore,NYPizzaStore提供纽约风味的pizza,CHPizzaStore提供芝加哥风味的pizza:public abstract class PizzaStore { public abstract Pizza orderPizza(原创 2013-05-30 18:40:18 · 1265 阅读 · 0 评论 -
代理模式(Proxy Pattern)
代理模式:为另一个对象提供一个替身或占位符以控制对这个对象的访问代理模式有很多变体,例如:远程代理:控制访问远程对象(java RMI)虚拟代理:控制访问创建开销大的对象保护代理:基于权限控制对对象的访问代理模式的类图如下:代理和实际对象继承自同一个接口,故代理可以在实际对象出现的地方代替实际对象实际对象是真正做事的地方,但是代理控制着它的访问代理持有对实际对象原创 2013-08-28 16:55:03 · 1296 阅读 · 0 评论 -
装饰模式(Decorate Pattern)
装饰模式定义:装饰模式动态的将责任附加到对象上,若要扩展功能,装饰模式可以提供比继承更有弹性的替代方案。装饰模式分为3个部分:1,抽象组件 2,具体组件 3,装饰者。具体组件和装饰者都继承自抽象组件,并且装饰者持有抽象组件的引用原创 2013-05-28 17:29:13 · 22916 阅读 · 8 评论 -
策略模式(Strategy Pattern)
策略模式定义:策略模式定义了算法族,将算法分别封装起来,让他们之间可以互相替换。此模式让算法的变化独立于使用算法的客户我们来看一个商场打折的例子public interface Discount { public double reduce(double total);}public class Derate implements Discount { // 8折 p...原创 2018-04-07 10:13:49 · 1823 阅读 · 1 评论 -
简单工厂(Simple Factory)
简单工厂并不算23种基本设计模式,只是对程序功能的简单封装、解耦参考如下代码:public interface Employee { public void doJob();}public class Tester implements Employee { public void doJob() { System.out.println("test"); ...原创 2013-05-30 14:50:58 · 1238 阅读 · 0 评论 -
UML类图(Class Diagram)中类与类之间的关系及表示方式
类之间大体分为5种关系: 1,依赖关系(Dependency)单向,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类,是一种“use a”关系如果A依赖于B,则B表现为A的局部变量,方法参数,静态方法调用等public class Person { public void doSomething(){ Card card = new Card();//局部变量 .......原创 2013-05-21 22:28:24 · 99261 阅读 · 14 评论 -
OO设计原则
软件维护时间将要占软件生命周期的90%,说明软件的可扩展性是十分重要的遵守设计原则将会极大提高软件的可维护性和可扩展性,使我们有时间专注于更重要的部分每一个设计模式都体现了一个或多个设计原则: 一,单一职责原则(SRP,Single Responsibility Principle)就一个类而言,应该仅有一个引起它变化的原因如果一个类承担的职责过多,就等于把这些职责耦合在一...原创 2013-05-20 21:57:22 · 1393 阅读 · 0 评论