欢迎来到天天文库
浏览记录
ID:61835763
大小:397.00 KB
页数:50页
时间:2021-03-23
《软件案例分析ch3.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、创建模式创建模式综述简单工厂(SimpleFactory)工厂方法(FactoryMethod)抽象工厂模式(AbstractFactory)建造模式(Builder)原型模式(Prototype)1简单工厂(SimpleFactory)又称为静态工厂方法(StaticFactoryMethod);由一个工厂对象决定创建出哪一种产品类的实例;所有产品实现同一个接口。1.2简单工厂方法类图1.3示例1.4简单工厂方法代码publicclassImgProcessorFactorypublicstaticImgProces
2、sorcreateImgProcessor(Stringformat){if(format.equals(“jpg”){returnnewMyProcessor();}elseif(format.equals(“bmp”)){returnnewBmpProcessor}......}}publicInterfaceImgProcessor{publicbyte[]resizeImg(byte[]data);}publicclassJpgProcessorimplementsImgProcessor{publicbyte
3、[]resizeImg(byte[]data){......}}1.5简单工厂方法代码续1.6简单工厂方法的简化实现1.7示例1.8简单工厂简化实现的另一个例子1.9简单工厂方法优点类工厂集中了所有的创建逻辑;可以在不修改客户端的情况下加入新类。1.10简单工厂方法缺点创建逻辑比较复杂;使用静态方法作为构建方法,无法继承;引入新产品的时候必须修改工厂类。1.11简单工厂方法的作用是所有构建模式的基础;将构建部分代码适当修改后,可将对象循环使用。2工厂方法工厂类有若干个,实现了同样一个工厂接口。每个工厂类可以创建一类具体
4、的产品。2工厂方法2.1工厂方法的一个例子2.2工厂方法部分代码publicclassBmpFactory{publicBmpFactory(){}publicImageProcessorcreateProcessor(){returnnewBmpProcessor();}}2.3工厂方法在java中的一个例子publicinterfaceCollection{...Iteratoriterator();}publicabstractclassAbstractListextendsAbstractCollectioni
5、mplementsList{...Iteratoriterator(){//代码实现部分}}3抽象工厂模式(AbstractFactory)3.2抽象工厂方法的一个例子3.3抽象工厂方法特点可以一次增加一个产品族增加一个产品族必须增加一产品类4单例模式每个类只有一个实例。类的构造函数是私有的。类使用一个静态属性保存自己的实例。publicclassSingleInstance{privatestaticSingleInstancesingleInstance;privateSingleInstance(){}publi
6、csynchronizedstaticSingleInstancegetInstance(){if(bmpProcessor==null){singleInstance=newSingleInstance();}returnsingleInstance;}}4.2单例模式的一种实现方法publicclassSingleInstance{privatestaticSingleInstancesingleInstance;privateSingleInstance(){}static{singleInstance=newS
7、ingleInstance();}}4.3单例模式的另外一种实现方法4.4抽象工厂方法第三种实现publicclassSingleInstance{privatestaticMapallInstance=newHashMap();privateSingleInstance(){}publicstaticsynchronziedMyInterfacegetInstance(Stringname){Objectobj=allInstance.get(name);if(obj==null){obj=Class.forName
8、(name).newInstance();}allInstance.put(name,obj);return(MyInterface)obj;}}4.5什么情况下使用单例模式系统只需要一个实例;对于工具类,最好使用单例模式,而不是静态方法;对于数据库连接,更不能使用单例模式。4.6单例的状态有状态类,用来记录系统当前状态。无状态类
此文档下载收益归作者所有