设计模式——创建型模型
目錄
**
一、5種創(chuàng)建型模型
**
1.1 單例模式(singleton)
簡(jiǎn)介:
單例模式特別簡(jiǎn)單,目的是為類創(chuàng)建唯一的對(duì)象。
下面是單例模式的一種實(shí)現(xiàn)方式(單例模式的5種實(shí)現(xiàn)方式見,傳送門):
1.2 構(gòu)建模式(Builder)
簡(jiǎn)介:
將一個(gè)復(fù)雜對(duì)象的構(gòu)建和表現(xiàn)分離,使得不同的構(gòu)建過程可以創(chuàng)建不同的表示
類圖:
代碼如下:
public class Product {/*** 定義一些關(guān)于產(chǎn)品的操作*/private String part1;private String part2;public String getPart1() {return part1;}public void setPart1(String part1) {this.part1 = part1;}public String getPart2() {return part2;}public void setPart2(String part2) {this.part2 = part2;}} public interface Builder {public void buildPart1();public void buildPart2();public Product retrieveResult();} public class ConcreteBuilder implements Builder {private Product product = new Product();/*** 產(chǎn)品零件建造方法1*/@Overridepublic void buildPart1() {//構(gòu)建產(chǎn)品的第一個(gè)零件product.setPart1("編號(hào):9527");}/*** 產(chǎn)品零件建造方法2*/@Overridepublic void buildPart2() {//構(gòu)建產(chǎn)品的第二個(gè)零件product.setPart2("名稱:XXX");}/*** 產(chǎn)品返還方法*/@Overridepublic Product retrieveResult() {return product;} } public class Director {/*** 持有當(dāng)前需要使用的建造器對(duì)象*/private Builder builder;/*** 構(gòu)造方法,傳入建造器對(duì)象* @param builder 建造器對(duì)象*/public Director(Builder builder){this.builder = builder;}/*** 產(chǎn)品構(gòu)造方法,負(fù)責(zé)調(diào)用各個(gè)零件建造方法*/public void construct(){builder.buildPart1();builder.buildPart2();} } public class Client {public static void main(String[]args){Builder builder = new ConcreteBuilder();Director director = new Director(builder);director.construct();Product product = builder.retrieveResult();System.out.println(product.getPart1());System.out.println(product.getPart2());}}1.3 原型模式(Prototype)
簡(jiǎn)介:
原型模式要求對(duì)象實(shí)現(xiàn)一個(gè)可以“克隆”自身的接口,這樣就可以通過復(fù)制一個(gè)對(duì)象實(shí)例來創(chuàng)建新的實(shí)例。通過原型來創(chuàng)建對(duì)象,就不需要關(guān)心實(shí)例本身的類型,只要實(shí)現(xiàn)了克隆自身的方法,就可以通過這 個(gè)方法獲取新的對(duì)象,而無需new
原型模式有兩種表現(xiàn)形式:1)簡(jiǎn)單形式 2)登記形式
類圖:
代碼如下:
1.4 工廠方法模式(Factory)
簡(jiǎn)介:
工廠方法的用意是定義一個(gè)創(chuàng)建對(duì)象的工廠接口,將實(shí)際創(chuàng)建工作推遲到子類中。
類圖:(工廠與抽象工廠)
代碼如下:
interface Product {}class ProductA implements Product {}class ProductB implements Product {}abstract class Factory {public abstract Product makeProduct();}class FactoryA extends Factory {@Overridepublic Product makeProduct() {return new ProductA();}}class FactoryB extends Factory {@Overridepublic Product makeProduct() {return new ProductB();}}public class Client {public static void main(String[] args) {Factory factory = new FactoryA();Product product = factory.makeProduct();//對(duì)象為:com.obob.test.ProductA@15db9742System.out.println(product);}}總結(jié)
以上是生活随笔為你收集整理的设计模式——创建型模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java——编译与反编译
- 下一篇: 单例模式的创建方式