A. java中幾種常見的設計模式
一共23種設計模式!
按照目的來分,設計模式可以分為創建型模式、結構型模式和行為型模式。
創建型模式用來處理對象的創建過程;結構型模式用來處理類或者對象的組合;行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述。
創建型模式用來處理對象的創建過程,主要包含以下5種設計模式:
工廠方法模式(Factory Method Pattern)
抽象工廠模式(Abstract Factory Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)
單例模式(Singleton Pattern)
結構型模式用來處理類或者對象的組合,主要包含以下7種設計模式:
適配器模式(Adapter Pattern)
橋接模式(Bridge Pattern)
組合模式(Composite Pattern)
裝飾者模式(Decorator Pattern)
外觀模式(Facade Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)
行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述,主要包含以下11種設計模式:
責任鏈模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解釋器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
備忘錄模式(Memento Pattern)
觀察者模式(Observer Pattern)
狀態模式(State Pattern)
策略模式(Strategy Pattern)
模板方法模式(Template Method Pattern)
訪問者模式(Visitor Pattern)
推薦你一本好書:《軟體秘笈:設計模式那點事》,裡面講解的23中設計模式例子很生動,容易理解,還有JDK中設計模式應用情況,看了收獲挺大的!網路裡面搜「設計模式」,第一條中設計模式網路中就有首推該圖書,瀏覽量在20幾萬以上的,不會錯的。好東西大家一起分享!
祝你早日學會設計模式!
B. java 設計模式用了哪些
在JDK(Java Development Kit)類庫中,開發人員使用了大量設計模式,正因為如此,我們可以在不修改JDK源碼的前提下開發出自己的應用軟體,研究JDK類庫中的模式實例也不失為學習如何使用設計模式的一個好方式。
(1)抽象工廠模式(Abstract Factory)
•Java.util.Calendar#getInstance()
•java.util.Arrays#asList()
•java.util.ResourceBundle#getBundle()
•java.NET.URL#openConnection()
•java.sql.DriverManager#getConnection()
•java.sql.Connection#createStatement()
•java.sql.Statement#executeQuery()
•java.text.NumberFormat#getInstance()
•java.lang.management.ManagementFactory (所有getXXX()方法)
•java.nio.charset.Charset#forName()
•javax.xml.parsers.DocumentBuilderFactory#newInstance()
•javax.xml.transform.TransformerFactory#newInstance()
•javax.xml.xpath.XPathFactory#newInstance()
(2)建造者模式(Builder)
•java.lang.StringBuilder#append()
•java.lang.StringBuffer#append()
•java.nio.ByteBuffer#put() (CharBuffer, ShortBuffer, IntBuffer,LongBuffer, FloatBuffer和DoubleBuffer與之類似)
•javax.swing.GroupLayout.Group#addComponent()
•java.sql.PreparedStatement
•java.lang.Appendable的所有實現類
(3)工廠方法模式(Factory Method)
•java.lang.Object#toString() (在其子類中可以覆蓋該方法)
•java.lang.Class#newInstance()
•java.lang.Integer#valueOf(String) (Boolean, Byte, Character,Short, Long, Float和Double與之類似)
•java.lang.Class#forName()
•java.lang.reflect.Array#newInstance()
•java.lang.reflect.Constructor#newInstance()
(4)原型模式(Prototype)
•java.lang.Object#clone() (支持淺克隆的類必須實現java.lang.Cloneable介面)
(5)單例模式(Singleton)
•java.lang.Runtime#getRuntime()
•java.awt.Desktop#getDesktop()
(1)適配器模式(Adapter)
•java.util.Arrays#asList()
•javax.swing.JTable(TableModel)
•java.io.InputStreamReader(InputStream)
•java.io.OutputStreamWriter(OutputStream)
•javax.xml.bind.annotation.adapters.XmlAdapter#marshal()
•javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal()
(2)橋接模式(Bridge)
•AWT (提供了抽象層映射於實際的操作系統)
•JDBC
(3)組合模式(Composite)
•javax.swing.JComponent#add(Component)
•java.awt.Container#add(Component)
•java.util.Map#putAll(Map)
•java.util.List#addAll(Collection)
•java.util.Set#addAll(Collection)
(4)裝飾模式(Decorator)
•java.io.BufferedInputStream(InputStream)
•java.io.DataInputStream(InputStream)
•java.io.BufferedOutputStream(OutputStream)
•java.util.zip.ZipOutputStream(OutputStream)
•java.util.Collections#checked[List|Map|Set|SortedSet|SortedMap]()
(5)外觀模式(Facade)
•java.lang.Class
•javax.faces.webapp.FacesServlet
(6)享元模式(Flyweight)
•java.lang.Integer#valueOf(int)
•java.lang.Boolean#valueOf(boolean)
•java.lang.Byte#valueOf(byte)
•java.lang.Character#valueOf(char)
(7)代理模式(Proxy)
•java.lang.reflect.Proxy
•java.rmi.*
(1)職責鏈模式(Chain of Responsibility)
•java.util.logging.Logger#log()
•javax.servlet.Filter#doFilter()
(2)命令模式(Command)
•java.lang.Runnable
•javax.swing.Action
(3)解釋器模式(Interpreter)
•java.util.Pattern
•java.text.Normalizer
•java.text.Format
•javax.el.ELResolver
(4)迭代器模式(Iterator)
•java.util.Iterator
•java.util.Enumeration
(5)中介者模式(Mediator)
•java.util.Timer (所有scheleXXX()方法)
•java.util.concurrent.Executor#execute()
•java.util.concurrent.ExecutorService (invokeXXX()和submit()方法)
•java.util.concurrent.ScheledExecutorService (所有scheleXXX()方法)
•java.lang.reflect.Method#invoke()
(6)備忘錄模式(Memento)
•java.util.Date
•java.io.Serializable
•javax.faces.component.StateHolder
(7)觀察者模式(Observer)
•java.util.Observer/java.util.Observable
•java.util.EventListener (所有子類)
•javax.servlet.http.HttpSessionBindingListener
•javax.servlet.http.HttpSessionAttributeListener
•javax.faces.event.PhaseListener
(8)狀態模式(State)
•java.util.Iterator
•javax.faces.lifecycle.LifeCycle#execute()
(9)策略模式(Strategy)
•java.util.Comparator#compare()
•javax.servlet.http.HttpServlet
•javax.servlet.Filter#doFilter()
(10)模板方法模式(Template Method)
•java.io.InputStream, java.io.OutputStream, java.io.Reader和java.io.Writer的所有非抽象方法
•java.util.AbstractList, java.util.AbstractSet和java.util.AbstractMap的所有非抽象方法
•javax.servlet.http.HttpServlet#doXXX()
(11)訪問者模式(Visitor)
•javax.lang.model.element.AnnotationValue和AnnotationValueVisitor
•javax.lang.model.element.Element和ElementVisitor
•javax.lang.model.type.TypeMirror和TypeVisitor
C. java常用的的設計模式和開發模式都有哪些
設計模式主要分三個類型、創建型、結構型和行為型。設計模式分:3種類型及23種模式。
JAVA中的開發模式:MVC是一個很常用的程序開發設計模式,M-Model(模型):封裝應用程序的狀態;V-View(視圖):表示用戶界面;C-Controller(控制器):對用戶的輸入作出反應,創建並設置模型。
(3)java設計模式應用擴展閱讀
創建型模式:單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式。
結構型模式:適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式。
行為型模式:模版方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式(Interpreter模式)、狀態模式、策略模式、職責鏈模式(責任鏈模式)、訪問者模式。
D. java中的設計模式有什麼作用啊
java
B/S
主流設計模式
mvc
能夠使項目層次
簡潔明確,易於維護、二次開發等優點。
其作用也是為了開發項目,所有設計模式都是為了開發。
MVC模式的目的就是實現Web系統的職能分工。
Model層實現系統中的業務邏輯,通常可以用JavaBean或EJB來實現。
View層用於與用戶的交互,通常用JSP來實現。
Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請求並選擇恰當的視圖以用於顯示,同時它也可以解釋用戶的輸入並將它們映射為模型層可執行的操作。
E. Java中常用的設計模式有哪些請詳細說明一下工廠模式。
1.單例模式(有的書上說叫單態模式其實都一樣)
該模式主要目的是使內存中保持1個對象
2.工廠模式
該模式主要功能是統一提供實例對象的引用。看下面的例子:
public class Factory{
public ClassesDao getClassesDao(){
ClassesDao cd = new ClassesDaoImpl();
return cd;
}
}
interface ClassesDao{
public String getClassesName();
}
class ClassesDaoImpl implements ClassesDao {
public String getClassesName(){
System.out.println("A班");
}
}
class test
{
public static void main(String[] args){
Factory f = new Factory();
f.getClassesDao().getClassesName();
}
}
這個是最簡單的例子了,就是通過工廠方法通過介面獲取對象的引用
3.建造模式
該模式其實就是說,一個對象的組成可能有很多其他的對象一起組成的,比如說,一個對象的實現非常復雜,有很多的屬性,而這些屬性又是其他對象的引用,可能這些對象的引用又包括很多的對象引用。封裝這些復雜性,就可以使用建造模式。
4.門面模式
這個模式個人感覺像是Service層的一個翻版。比如Dao我們定義了很多持久化方法,我們通過Service層將Dao的原子方法組成業務邏輯,再通過方法向上層提供服務。門面模式道理其實是一樣的。
5.策略模式
這個模式是將行為的抽象,即當有幾個類有相似的方法,將其中通用的部分都提取出來,從而使擴展更容易。
F. java開發中都用到了哪些設計模式用在什麼場合
設計模式很多,但總的來講分為4大類,creationalpatterns,通常是隱藏對象的new進程,通過專門的類來具現對象。structuralpatterns,根據類的層次關系和介面來設計。behavioralpatterns根據對象間的通訊來設計J2EEpatterns.重視於表現層設計每類都有很多種。JAVA戰狼班