內部類:匿名類和工廠模式結合
/*
* 2018年3月26日10:46:19
* 程式碼目的:
* 顯示使用匿名內部類結合工廠模式的使用
工廠方法模式(Factory Method Pattern)又稱為工廠模式,
也叫虛擬構造器(Virtual Constructor)模式或者多型工廠(Polymorphic Factory)模式,
它屬於類建立型模式。在工廠方法模式中,
工廠父類負責定義建立產品物件的公共介面,而工廠子類則負責生成具體的產品物件,
這樣做的目的是將產品類的例項化操作延遲到工廠子類中完成,即通過工廠子類來確定究竟應該例項化哪一個具體產品類。
2.3. 模式結構
工廠方法模式包含如下角色:
•Product:抽象產品
•ConcreteProduct:具體產品
•Factory:抽象工廠
•ConcreteFactory:具體工廠
*
* */
//: innerclasses/Factories.java import static net.mindview.util.Print.*; //抽象產品 interface Service { void method1(); void method2(); } //抽象工廠 interface ServiceFactory { Service getService(); } //具體產品 class Implementation1 implements Service { private Implementation1() {}//私有構造器 public void method1() {print("Implementation1 method1");} public void method2() {print("Implementation1 method2");} //具體工廠 public static ServiceFactory factory = new ServiceFactory() { public Service getService() { return new Implementation1(); } }; } class Implementation2 implements Service { private Implementation2() {}//私有構造器 public void method1() {print("Implementation2 method1");} public void method2() {print("Implementation2 method2");} public static ServiceFactory factory = new ServiceFactory() { public Service getService() { return new Implementation2(); } }; } public class Factories { public static void serviceConsumer(ServiceFactory fact) { Service s = fact.getService(); s.method1(); s.method2(); } public static void main(String[] args) { // 現在用於Implementation1和Implementation2的構造器都可以是private, // 並且沒有任何必要去建立工廠的具名類,另外你只需要建立單一的工廠物件。因此 // 在本例中它被建立為Service實現中的一個static域 serviceConsumer(Implementation1.factory); // Implementations are completely interchangeable: serviceConsumer(Implementation2.factory); } } /* Output: Implementation1 method1 Implementation1 method2 Implementation2 method1 Implementation2 method2 *///:~
相關推薦
內部類:匿名類和工廠模式結合
/* * 2018年3月26日10:46:19 * 程式碼目的: * 顯示使用匿名內部類結合工廠模式的使用 工廠方法模式(Factory Method Pattern)又稱為工廠模
深入理解java巢狀類和內部類、匿名類
四、在外部類中定義內部類 匿名類就是沒有名字的內部類,是內部類的一種特殊情況。????????? 這句話對嗎??? 前端時間在寫.net專案中,一直錯將.cs裡的兩個class當作內部類,原來是一個檔案裡的兩個類而已,這讓我想起了Java中的內部類,比較內部類,那麼還有兩個類,那就是匿名類和匿名
java巢狀類和內部類、匿名類
4、匿名內部類 abstract class Person { public abstract void showCareer(); } public class Teacher extends Person{ @Override public void showCareer()
【學習筆記】 唐大仕—Java程式設計 第5講 深入理解Java語言之5.5 內部類與匿名類
/** * 內部類與匿名類 * @author cnRicky * @date 2018.11.10 */ 內部類與匿名類 內部類(inner class)是在其他類中的類 匿名類(anonymous class)是一種特殊的內部類,它沒有類名 內部類(Inner class)
Java中的內部類、匿名類、匿名內部類
內部類 Java中在一個類的內部定義的類叫做內部類(inner class)。建立一個內部類時,其物件就擁有了與外部類物件之間的關係。這種通過this來引用形成的,是內部類物件可以隨意訪問外部類中的所有成員變數!(因為被private修飾的成員變數和成員方法僅能被該類所使用,內部類中可以
Java筆記丨20 內部類與匿名類
內部類是在其他類中的類 匿名類是一種特殊的內部類,它沒有類名 內部類 內部類的定義 將類的定義class xxxx{…}置入一個類的內部即可 編譯器生成xxxx$xxxx這樣的class檔案 內部類不能與外部類同名 內部類的使用 在封裝它的類的內部使
內部類與匿名類
內部類顧名思義就是一個類內的類。是為了方便而被建立的,內部類可以呼叫外部類的方法屬性,而外部類想要呼叫內部類需要先例項化物件然後通過物件進行呼叫。 內部類分兩種1.成員內部類2.區域性內部類 匿名類也是為了方便而產生的在安卓開發中很常見,先看一個例子: clas
Java基礎之內部類、匿名類和異常處理知識點總結
Object是java中已有的一個所有類的父類。也稱為根類,你可以把它理解為java中的上帝。java中的類都是直接或者間接繼承自object類。 該類的出現:是封裝了所有物件都具備的方法。所有物件都具備方法有哪些呢? boolean equals
TreeSet、Comparable、Comparator、內部類、匿名類
1 package com.tn.treeSet; 2 3 public class Student { 4 private String name; 5 private int age; 6 public Student(){}
java/c++中內部類、匿名類
1.java中的內部類: class Outside{ private String nameString ; private int age; Outside() {
JAVA監聽器新增的四種方式(自身、外部類、內部類、匿名類)
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ThisClassEvent extends JFrame implements Acti
Java內部類、匿名類及this使用
http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html http://www.cnblogs.com/hujunzheng/p/3871928.html
java之執行緒建立的兩種方式,六種狀態和匿名內部類建立子類或實現類物件
一.匿名內部類建立子類或實現類物件 new Test(){} 相當於建立了Test類的子類物件 並且沒有類名 建立介面實現類 new 介面名() {};介面實現類的物件 注意 : new 後邊是類或者介面名 大括號內是類或者介面中的方法 public
再續:匿名內部類呼叫父類方法或訪問父類成員
public class Fat { protected String x="hi";
“全棧2019”Java第一百零六章:匿名內部類與抽象類接口註意事項
inf href 匿名 頭條號 java學習 info intellij tel https 難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文鏈接 “全棧2019”Jav
“全棧2019”Java第一百零六章:匿名內部類與抽象類介面注意事項
難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第一百零六章:匿名內部類與抽象類介面注意事項 下一章 “全棧2019”Java第一百零七章:
java關於類(內部類,外部類,匿名類)的相關面試題
一個“.java”原始檔中是否可以包含多個類(不是內部類)?有什麼限制? 答:可以,但一個原始檔中最多隻能有一個公開類(public class)而且檔名必須和公開類的類名完全保持一 致。 Anonymous Inner Class(匿名內部類)是否可以繼承其它類?是否可以實現介面
內部類------巢狀類、區域性類、匿名類、lambda
巢狀類、區域性類:是帶有名字的,可以多次使用,巢狀類使用相對更為靈活一點,區域性類在函式內內部。匿名類只是使用一次,lambda是匿名類的簡寫。 巢狀類: 是否有名稱空間:是 是否可以生面為static型別:可以宣告為static類,建立方式OuterClass.S
Java23種設計模式之:策略模式和工廠模式
因為目前產品用到了策略模式,比如國內的使用者註冊走A流程,美國使用者走B流程,印度使用者走C流程,每個流程有些相同,有些則完全不一樣。 這兩種設計模式非常容易弄混淆。 策略模式和工廠模式: 1. 關注點不一樣,工廠模式關注物件建立,策略模式關注行為封裝 2.解決的問題不
內部類、匿名內部類和物件的初始化過程
一般用於類的設計: 分析事物時,發現該事物描述中海油事物,而且這個事物還在訪問被描述事物的內容 這時就是還有的事物定義成內部類來描述 為什麼內部類能直接訪問外部類中成員呢? 那是因為內部類持有了外部類的引用。外部類名:this 內部類可以存放在區域性位置上 內部類